In [74]:
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import numpy as np
import cv2

import glob
import time
import sklearn.svm as svm
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from skimage.feature import hog
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import RandomizedSearchCV
In [ ]:
# import numpy as np
# import cv2
# import matplotlib.pyplot as plt
# import matplotlib.image as mpimg

# class save_images ( object ):
#     def __init__( self ):
#         self.i = 0
#     def __call__( self, image):
#         # do somethingc
#         self.i +=1
#         cv2.imwrite("test_images_project/image" + str(self.i) + ".jpg", cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
        
#         return image
    
# save_images = save_images()    
    
# ## creating additional test images
# from moviepy.editor import VideoFileClip
# output_video_name = 'test_video_output.mp4'
# clip1 = VideoFileClip("project_video.mp4")
# clip2 = clip1.subclip(0,15)
# output_video = clip2.fl_image(lambda x:save_images(x)) #NOTE: this function expects color images!!
# %time output_video.write_videofile(output_video_name, audio=False)
# import os
# os.remove('test_video_output.mp4')
# print ("Completed")

Create a mask

In [86]:
def region_of_interest(img):
    """
    Applies an image mask.
    
    Only keeps the region of the image defined by the polygon
    formed from `vertices`. The rest of the image is set to black.
    """
    vertices = np.array([[(80,       img.shape[0] ),                    # <-- bottom left
#                           (0,       img.shape[0]*1 ),                    # <-- bottom left
                          (.55*img.shape[1] ,  .5*img.shape[0]),                    # <-- top left
                          (.8*img.shape[1],   .5*img.shape[0]),                    # <-- top right
                          (img.shape[1],      img.shape[0]*.5),
                          (img.shape[1],      img.shape[0]) 
                         ]], dtype=np.int32)  # <-- bottom right
    #defining a blank mask to start with
    mask = np.zeros_like(img)   
    
    #defining a 3 channel or 1 channel color to fill the mask with depending on the input image
    if len(img.shape) > 2:
        channel_count = img.shape[2]  # i.e. 3 or 4 depending on your image
        ignore_mask_color = (255,) * channel_count
    else:
        ignore_mask_color = 255
        
    #filling pixels inside the polygon defined by "vertices" with the fill color    
    cv2.fillPoly(mask, vertices, ignore_mask_color)
    #returning the image only where mask pixels are nonzero
    masked_image = cv2.bitwise_and(img, mask)
    
    masked_image[masked_image ==0 ] = 0
    return masked_image

img = cv2.imread("test_images/test1.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()

ax1.imshow(img)
ax1.set_title("Original ")
# ax1.axis('off')

ax2.imshow(region_of_interest(img))
ax2.set_title("Masked " )
# ax2.axis('off')

plt.show()

CHECK IF A POINT ( USED FOR THE CAR BOXES ) IS INSIDE THE AREA OF INTERESTS

In [87]:
def inside_polygon(x_pos, y_pos, img, points):
#     """
#     Return True if a coordinate (x, y) is inside a polygon defined by
#     a list of verticies [(x1, y1), (x2, x2), ... , (xN, yN)].

#     Reference: http://www.ariel.com.au/a/python-point-int-poly.html
#     """
   ## inverting because the coords to the cartesian coordinates
#     y = img.shape[0] -  y_pos
#     x = img.shape[1] -  x_pos
    y =  y_pos
    x =  x_pos    
#     print ( " x = {}, y = {}".format(x,y))
    n = len(points)
    inside = False
    p1x, p1y = points[0]
    for i in range(1, n + 1):
        p2x, p2y = points[i % n]
        if y > min(p1y, p2y):
            if y <= max(p1y, p2y):
                if x <= max(p1x, p2x):
                    if p1y != p2y:
                        xinters = (y - p1y) * (p2x - p1x) / (p2y - p1y) + p1x
                    if p1x == p2x or x <= xinters:
                        inside = not inside
        p1x, p1y = p2x, p2y
    return inside
In [88]:
img = cv2.imread("test_images/test1.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()

ax1.imshow(img)
ax1.set_title("Original ")
# ax1.axis('off')

ax2.imshow(region_of_interest(img))
ax2.set_title("Masked " )
# ax2.axis('off')

plt.show()

vertices = np.array([(80,       img.shape[0] ),                    # <-- bottom left
#                           (0,       img.shape[0]*1 ),                    # <-- bottom left
                      (.55*img.shape[1] ,  .5*img.shape[0]),                    # <-- top left
                      (.8*img.shape[1],   .5*img.shape[0]),                    # <-- top right
                      (img.shape[1],      img.shape[0]*.5),
                      (img.shape[1],      img.shape[0]) 
                     ], dtype=np.int32)  # <-- bottom right



# print(vertices)
x_pos = 1000 
y_pos = 400
if inside_polygon (img=img, x_pos = x_pos , y_pos= y_pos , points=vertices) == True :
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is INSIDE AREA OF INTEREST".format(y_pos, x_pos))
else:
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is OUTSIDE area of interest".format(y_pos, x_pos))


x_pos = 100 
y_pos = 0
if inside_polygon (img=img, x_pos = x_pos , y_pos= y_pos , points=vertices) == True :
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is INSIDE AREA OF INTEREST".format(y_pos, x_pos))
else:
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is OUTSIDE area of interest".format(y_pos, x_pos))
   
 point with coordinates (y_pos = 400,x_pos = 1000 ) is INSIDE AREA OF INTEREST
 point with coordinates (y_pos = 0,x_pos = 100 ) is OUTSIDE area of interest
In [89]:
img = cv2.imread("test_images/test1.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()

ax1.imshow(img)
ax1.set_title("Original ")
ax1.axis('off')

ax2.imshow(region_of_interest(img))
ax2.set_title("Masked " )
ax2.axis('off')

plt.show()

vertices = np.array([(80,       img.shape[0] ),                    # <-- bottom left
#                           (0,       img.shape[0]*1 ),                    # <-- bottom left
                      (.58*img.shape[1] ,  .54*img.shape[0]),                    # <-- top left
                      (.8*img.shape[1],   .5*img.shape[0]),                    # <-- top right
                      (img.shape[1],      img.shape[0]*.5),
                      (img.shape[1],      img.shape[0]) 
                     ], dtype=np.int32)  # <-- bottom right


# print(vertices)
x_pos = 100 
y_pos = 720
if inside_polygon (img=img, x_pos = x_pos , y_pos= y_pos , points=vertices) == True :
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is INSIDE AREA OF INTEREST".format(y_pos, x_pos))
else:
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is OUTSIDE area of interest".format(y_pos, x_pos))


x_pos = 100 
y_pos = 0
if inside_polygon (img=img, x_pos = x_pos , y_pos= y_pos , points=vertices) == True :
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is INSIDE AREA OF INTEREST".format(y_pos, x_pos))
else:
   print ( " point with coordinates (y_pos = {},x_pos = {} ) is OUTSIDE area of interest".format(y_pos, x_pos))
   
 point with coordinates (y_pos = 720,x_pos = 100 ) is INSIDE AREA OF INTEREST
 point with coordinates (y_pos = 0,x_pos = 100 ) is OUTSIDE area of interest
In [ ]:
for image_name  in  sorted(glob.glob('test_images/*')):
    image = cv2.imread(image_name)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
    f.tight_layout()

    ax1.imshow(image)
    ax1.set_title("Original ")
    ax1.axis('off')

    ax2.imshow(region_of_interest(image))
    ax2.set_title("Masked " )
    ax2.axis('off')

    plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
    plt.show()

region of interests on the entire video

In [ ]:
# from moviepy.editor import VideoFileClip
# output_video_name = 'project_video_output_masked.mp4'
# clip1 = VideoFileClip("project_video.mp4")
# output_video = clip1.fl_image(lambda x: region_of_interest(x)) #NOTE: this function expects color images!!
# %time output_video.write_videofile(output_video_name, audio=False,verbose=False)
# print ("Completed")

image_features_extractor

In [75]:
class image_features_extractor:
    def __init__(self
        ,color_space           # Can be RGB, HSV, LUV, HLS, YUV, YCrCb
        ,orient                # HOG orientations 
        ,pix_per_cell          # HOG pixels per cell 
        ,cell_per_block        # HOG cells per block 
        ,spatial_size          # Spatial binning dimensions
        ,spatial_feat          # Spatial features on or off
        ,hist_feat             # Histogram features on or off
        ,hog_feat              # HOG features on or off
        ,nbins                 # Number of color histogram bins
        ,bins_range
        ,image_size
        ,debug=False       ):

        self.color_space = color_space
        self.orient = orient
        self.pix_per_cell = pix_per_cell
        self.cell_per_block = cell_per_block
        self.spatial_size = spatial_size
        self.spatial_feat = spatial_feat
        self.hist_feat = hist_feat
        self.hog_feat = hog_feat
        self.nbins=nbins
        self.bins_range=bins_range
        self.debug =debug
        self.image_size = image_size

    # Define a function to compute binned color features  
    def bin_spatial(self,feature_image):
        # Use cv2.resize().ravel() to create the feature vector
        features = cv2.resize(feature_image, self.spatial_size).ravel() 
        # Return the feature vector
        return features

    # Define a function to compute color histogram features  
    def color_hist(self,feature_image):
        # Compute the histogram of the color channels separately
        channel1_hist = np.histogram(feature_image[:,:,0], bins=self.nbins, range=self.bins_range)
        channel2_hist = np.histogram(feature_image[:,:,1], bins=self.nbins, range=self.bins_range)
        channel3_hist = np.histogram(feature_image[:,:,2], bins=self.nbins, range=self.bins_range)
        # Concatenate the histograms into a single feature vector
        self.hist_features = np.concatenate((channel1_hist[0], channel2_hist[0], channel3_hist[0]))
#         hist_features = channel1_hist[0]

        if self.debug:
            # Generating bin centers
            bin_edges = channel1_hist[1]
            bin_centers = (bin_edges[1:]  + bin_edges[0:len(bin_edges)-1])/2
            # Plot a figure with all three bar charts
            fig = plt.figure(figsize=(12,3))
            plt.subplot(131)
            plt.bar(bin_centers, channel1_hist[0])
            plt.xlim(0, 256)
            plt.title('Channel 0 Histogram')
            plt.subplot(132)
            plt.bar(bin_centers, channel2_hist[0])
            plt.xlim(0, 256)
            plt.title('Channel 1 Histogram')
            plt.subplot(133)
            plt.bar(bin_centers, channel3_hist[0])
            plt.xlim(0, 256)
            plt.title('Channel 2 Histogram')
            plt.show()

       
        # Return the individual histograms, bin_centers and feature vector
        return self.hist_features

    def get_hog_features(self, feature_image):
        if self.debug:
            # feature_image is 1 channel image
            hog_features ,hog_image    = hog(feature_image, 
                                  orientations=self.orient, 
                                  pixels_per_cell=(self.pix_per_cell, self.pix_per_cell),
                                  cells_per_block=(self.cell_per_block, self.cell_per_block), 
                                  block_norm='L2-Hys',
                                  transform_sqrt=True, 
                                  visualise=True, feature_vector=True)
            return hog_features, hog_image

        
        else:
            # feature_image is 1 channel image
            hog_features     = hog(feature_image, 
                                  orientations=self.orient, 
                                  pixels_per_cell=(self.pix_per_cell, self.pix_per_cell),
                                  cells_per_block=(self.cell_per_block, self.cell_per_block), 
                                  block_norm='L2-Hys',
                                  transform_sqrt=True, 
                                  visualise=False, feature_vector=True)
            return hog_features



    def get_all_features (self, img):
        if self.debug:
            print( "get_all_features image shape "+ str(img.shape))
        if self.color_space != 'RGB':
            if self.color_space == 'HSV':
                feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
            elif self.color_space == 'LUV':
                feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2LUV)
            elif self.color_space == 'HLS':
                feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HLS)
            elif self.color_space == 'YUV':
                feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YUV)
            elif self.color_space == 'YCrCb':
#                 print (" Color space YCrCb ")
                feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
        else: 
            feature_image = np.copy(img)
            
        
        if feature_image.shape[0] == self.image_size[0] and\
           feature_image.shape[1] == self.image_size[1]:
            pass #print (" feature_image.shape == self.image_size")
        else:
             print (" feature_image.shape = " + str(feature_image.shape))
             print (" self.image_size = "     + str(self.image_size))
             feature_image = cv2.resize(feature_image, self.image_size)    
                
        if self.debug:
            f, (ax1, ax2,ax3) = plt.subplots(1, 3, figsize=(24, 9))
            f.tight_layout()
            

            ax1.imshow(feature_image[:,:,0],cmap="gray")
            ax1.set_title("Image in format " + self.color_space + " channel 0 ")
            ax1.axis('off')
            
            ax2.imshow(feature_image[:,:,1],cmap="gray")
            ax2.set_title("Image in format " + self.color_space+ " channel 1 ")
            ax2.axis('off')

            ax3.imshow(feature_image[:,:,2],cmap="gray")
            ax3.set_title("Image in format " + self.color_space+ " channel 2 ")
            ax3.axis('off')

            plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
            plt.show()


            
        img_features = []

        if self.spatial_feat == True:
            img_features.append(self.bin_spatial(feature_image))

        if self.hist_feat == True:
            img_features.append(self.color_hist(feature_image))
            
        if self.hog_feat == True:
#             gray_image = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
#             hog_features = self.get_hog_features(gray_image)
            hog_features = []
            if self.debug:
                f, axarr = plt.subplots(1, 3, figsize=(24, 9))
                f.tight_layout()
            
            for channel in range(feature_image.shape[2]):
                if self.debug:
                    temp, hog_image = self.get_hog_features(feature_image[:,:,channel])
                    
                    axarr[channel].imshow(hog_image,cmap="gray")
                    axarr[channel].set_title("Image in format " + self.color_space + " channel 0 ")
                    axarr[channel].axis('off')

                else:
                    temp = self.get_hog_features(feature_image[:,:,channel])
                    
                hog_features.extend(temp)      
                
            img_features.append(hog_features)
            
            if self.debug:
                plt.show()


            
        #9) Return concatenated array of features
    #     print (img_features)
        return np.concatenate(img_features)                
    

Car Detector from images ( train & prediction )

In [76]:
class image_car_detector:
    def __init__(self, extractor, 
                 cars_folder='train_data/car', 
                 notcars_folder='train_data/non-car',
                 limit_images=None):
        self.cars_folder    = cars_folder
        self.notcars_folder = notcars_folder

        self.car_images_list     = []
        self.notcars_images_list = []
        self.extractor = extractor
        
        self.car_features = []
        self.notcar_features = []
        self.limit_images = limit_images

        
    def load_images_list(self):
        self.car_images_list     = []
        self.notcars_images_list = []
    
        # loading cars
        for subfolder in glob.glob(self.cars_folder + '/*'):
          print ("subfolder = " + subfolder)
          for image  in  glob.glob(subfolder+'/*'):
               self.car_images_list.append(image)

        # loading non cars
        for subfolder in glob.glob(self.notcars_folder+ '/*'):
          for image  in  glob.glob(subfolder+'/*'):
               self.notcars_images_list.append(image)
    
    # Define a function to extract features from a list of images
    # Have this function call bin_spatial() and color_hist()
    def extract_imgs_features(self):
        # Iterate through the list of images
        if self.limit_images:
            x_limit = self.limit_images
            print (" limiting the number of images to " + str(x_limit))
        else:
            x_limit = len(self.car_images_list)
            print (" processing " + str(x_limit) +" images "  )

#         x_limit = 100
        print ( " ")
        print (" Extracting features from cars ....")
        # CARS FEATURES 
        self.car_features = []


        for file in self.car_images_list[:x_limit]:
            image = cv2.imread(file)
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
            temp_features = self.extractor.get_all_features(image)
#             print ( " features length = " + str(len(temp_features)))
            self.car_features.append(temp_features)
            
        print (" .. completed ( features per image = " + str(len(self.car_features[0])) + ")")

            
        print ( " ")
        print (" Extracting features from non cars ....")
        # NOT CAR FEATURES 
        self.notcar_features = []
        # Iterate through the list of images
        for file in self.notcars_images_list[:x_limit]:
            image = cv2.imread(file)
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
            temp_features = self.extractor.get_all_features(image)
#             print ( " features length = " + str(len(temp_features)))
            self.notcar_features.append(temp_features)
        print (" .. completed ( features per image = " + str(len(self.notcar_features[0])) + ")")

        print (" ")

    def save_features(self):
        np.array(self.car_features).dump("car_features.pkl")
        np.array(self.notcar_features).dump("notcar_features.pkl")
        print ( " .... features saved ")

    def load_features(self):
        self.car_features    = np.load("car_features.pkl")
        self.notcar_features = np.load("notcar_features.pkl")
        print ( " .... features loaded ")



    def search_windows(self, img, windows, cars_classifier):
        self.on_windows = []
        for window in windows:
            #3) Extract the test window from original image
            ###[startx, starty, endx, endy]
            check = inside_polygon (img=img, 
                                           x_pos = window[0] ,    # --> x1 position 
                                           y_pos=  window[1] ,    # --> y1 position 
                                           points=vertices) == True

            if check == True:
                    test_img = img[window[1]:window[3], window[0]:window[2]]
                    test_img = cv2.resize(test_img, (64,64))

                    if cars_classifier.type == "CNN":
                        prediction = cars_classifier.predict(test_img)

                    else:
                        #4) Extract features for that window using single_img_features()
                        features = self.extractor.get_all_features(test_img)
                        features_reshaped = np.array(features).reshape(1, -1)
                        #5) Scale extracted features to be fed to classifier
                        test_features = cars_classifier.X_scaler.transform(np.array(features).reshape(1, -1))
                        #6) Predict using your classifier
                        prediction = cars_classifier.predict(test_features)

                    #7) If positive (prediction == 1) then save the window
                    if prediction == "car":
                        self.on_windows.append(window)
            else:
                    print ( "search_windows : window is outside area of interests")
                
        return self.on_windows
In [188]:
import cv2
image = cv2.imread('train_data/car/GTI_MiddleClose/image0110.png')
image =cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# color space = RGB, HSV, LUV, HLS, YUV, YCrCb
extractor = image_features_extractor(color_space= 'YCrCb' #'YCrCb'
                                    ,pix_per_cell=16
                                    ,cell_per_block=2
                                     
                                    ,orient=9
                                    ,spatial_feat = True     # Spatial features on or off
                                    ,hist_feat = True        # Histogram features on or off
                                    ,hog_feat = True  
                                    ,spatial_size = (16, 16)
                                    ,bins_range=(0, 256)
                                    ,nbins=32
                                    , debug=True
                                    , image_size = (64,64)  
                                    )
plt.imshow(image)
plt.axis("off")
plt.show()

all_features = extractor.get_all_features(image)
all_features.shape
get_all_features image shape (64, 64, 3)
Out[188]:
(1836,)

Features extraction and Classifier training

In [190]:
extractor.debug = False

detector = image_car_detector(extractor) #, limit_images= 2000)

detector.load_images_list()
detector.extract_imgs_features()
detector.save_features()
detector.load_features()
subfolder = train_data/car/GTI_Right
subfolder = train_data/car/GTI_MiddleClose
subfolder = train_data/car/GTI_Far
subfolder = train_data/car/other
subfolder = train_data/car/GTI_Left
subfolder = train_data/car/KITTI_extracted
 processing 8804 images 
 
 Extracting features from cars ....
 .. completed ( features per image = 1836)
 
 Extracting features from non cars ....
 .. completed ( features per image = 1836)
 
 .... features saved 
 .... features loaded 

Defining the classifier HOG + Neural Network

In [79]:
class classifier_hog_nn:
    def __init__(self, car_features, notcar_features):
        self.car_features = car_features
        self.notcar_features = notcar_features
        self.type="HOG+NEURAL"
                 
    def train(self, parameters=[1, 10], epochs=20,batch_size = 32,verbose =False):
        
        X = np.vstack((self.car_features, self.notcar_features)).astype(np.float64)                        

        print (".....Scaling...")
        # Fit a per-column scaler
        self.X_scaler = StandardScaler().fit(X)
        
        # Apply the scaler to X
        scaled_X = self.X_scaler.transform(X)
        print (scaled_X)
        
        y = np.hstack((np.ones(len(self.car_features)), np.zeros(len(self.notcar_features))))

        from sklearn.model_selection import train_test_split

        # Split up data into randomized training and test sets
        rand_state = np.random.randint(0, 100)
        self.X_train, self.X_test, self.y_train, self.y_test = train_test_split(
            scaled_X, y, test_size=0.1, random_state=rand_state)

        #################
        # #### START TRAINING 
        #################

        import time

        print ( "Start training ... ")
        t=time.time()
        from keras.models import Sequential
        from keras.layers import Dense, Dropout
        from keras.utils import to_categorical
        
        self.clf = Sequential()
        
        self.clf.add(Dense(32, input_shape=(len(self.car_features[0]),), name="dense1"))
        self.clf.add(Dense(64, activation='relu', name="dense2"))
        self.clf.add(Dropout(0.2))
        self.clf.add(Dense(1, activation='sigmoid', name="final"))
        
        self.clf.compile('adam', 'binary_crossentropy', ['accuracy'])

            
        history = self.clf.fit(self.X_train, self.y_train,
                    batch_size=batch_size,
                    epochs = epochs,
                    verbose=verbose,
                    shuffle=True,
                    validation_split=0.2,           
                    )
                  
        t2 = time.time()
        print(round(t2-t, 2), 'Seconds to train the classifier...')

        # Check the score of the SVC
        score = self.clf.evaluate(self.X_test, self.y_test)

#         print('Test Accuracy of SVC = ', round(self.clf.score(X_test, y_test), 4))
        print( " ")
        print('Test Accuracy of classifier = ' + str(score[1]))

        
    def predict(self, features):
        prediction = self.clf.predict(features).squeeze()
        if prediction >  0.9:
#         if prediction ==   1:
            return "car"
        else:
            return "non-car"
        
        
    
    def save_classifier(self):
        self.clf.save("keras_model.h5")
        
        import pickle
#         # save the classifier
#         with open('car_detection_classifier.pkl', 'wb') as fid:
#             pickle.dump(self.clf, fid) 
            
        with open('X_scaler.pkl', 'wb') as fid:
            pickle.dump(self.X_scaler, fid) 
        print (" .. classifier saved ")    

    def load_classifier(self):
        import pickle
        # save the classifier
#         with open('car_detection_classifier.pkl', 'rb') as fid:
#             self.clf = pickle.load(fid)
        from keras.models import load_model
        self.clf = load_model("keras_model.h5")
        
        with open('X_scaler.pkl', 'rb') as fid:
            self.X_scaler = pickle.load(fid)

        print (" .. classifier loaded ")  

training the hog classifier

In [80]:
cars_classifier_hog_nn = classifier_hog_nn(detector.car_features, detector.notcar_features)
# cars_classifier_hog_nn.train(epochs=30,batch_size=32, verbose=True)

# cars_classifier_hog_nn.save_classifier()
cars_classifier_hog_nn.load_classifier()
Using TensorFlow backend.
 .. classifier loaded 

TESTING HOG + NEURAL NETWORK CLASSIFIER

In [ ]:
# import cv2

# print ( "*************************************************************")        
# print ( "** TESTING NEURAL NETWORK CLASSIFIER .....") 
# print ( "*************************************************************")        


# def classify(file):
#     image = cv2.imread(file)
#     image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
#     temp_features = extractor.get_all_features(image)
#     # Scale extracted features to be fed to classifier
#     temp_features = cars_classifier_hog_nn.X_scaler.transform(np.array(temp_features).reshape(1, -1))
#     # Predict using your classifier
#     prediction = cars_classifier_hog_nn.predict(temp_features)
#     return prediction

# corrected_predictions = 0
# wrong_predictions = 0

# ######
# #### cars 
# ######
# print ( " Predicting CARS")
# for folder  in  sorted(glob.glob('train_data/car/*')):
#     print ( " Predicting CARS folder " + str(folder))
#     for file in glob.glob(folder+ "/*"):
#         prediction = classify(file)
#         if prediction == "car":
#             corrected_predictions +=1
#         else:
#             wrong_predictions +=1
#     print ("                                     ..... correct= {} , wrong={} "\
#            .format(corrected_predictions,wrong_predictions ))

# ######
# #### NON cars 
# ######
# print ( " ")
# print ( " Predicting NON CARS")
# for folder  in  sorted(glob.glob('train_data/non-car/*')):
#     print ( " Predicting NON CARS folder " + str(folder))
#     for file in glob.glob(folder + "/*"):
#         prediction = classify(file)
#         if prediction == "non-car":
#             corrected_predictions +=1
#         else:
#             wrong_predictions +=1
#     print ("                                     ..... correct= {} , wrong={} "\
#            .format(corrected_predictions,wrong_predictions ))

# print ( "*************************************************************")        
# print ( "** NEURAL NETWORK CLASSIFIER ..... ")
# print ( "**   Corrected predictions {}".format(corrected_predictions))        
# print ( "**   Wrong     predictions {}".format(wrong_predictions))        
# print ( "*************************************************************")        

Re-Defining the classifier as Svm

In [191]:
class classifier_svm():
    def __init__(self, car_features, notcar_features):
        self.car_features = car_features
        self.notcar_features = notcar_features
        self.type="SVM"
                 
    def train(self, parameters=[1, 10], epochs=20,batch_size = 32,verbose =False):
        
        X = np.vstack((self.car_features, self.notcar_features)).astype(np.float64)                        

        print (".....Scaling...")
        # Fit a per-column scaler
        self.X_scaler = StandardScaler().fit(X)
        
        # Apply the scaler to X
        scaled_X = self.X_scaler.transform(X)
        y = np.hstack((np.ones(len(self.car_features)), np.zeros(len(self.notcar_features))))

        from sklearn.model_selection import train_test_split

        # Split up data into randomized training and test sets
        rand_state = np.random.randint(0, 100)
        self.X_train, self.X_test, self.y_train, self.y_test = train_test_split(
            scaled_X, y, test_size=0.1, random_state=rand_state)

        #################
        # #### START TRAINING 
        #################

        import time

        print ( "Start training ... ")
        t=time.time()
        self.clf = svm.LinearSVC()
#         parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
#         svr = svm.SVC()
#         self.clf = GridSearchCV(svr, parameters)
        self.clf.fit(self.X_train, self.y_train)
        
        
        t2 = time.time()
        print(round(t2-t, 2), 'Seconds to train the classifier...')

        # Check the score of the SVC
        score = self.clf.score(self.X_test, self.y_test)

        print( " ")
        print('Test Accuracy of classifier = ' + str(score))

    def predict(self, features):
        prediction = self.clf.predict(features).squeeze()
        if prediction >  0.9:
#         if prediction ==  1:
            return "car"
        else:
            return "non-car"

    def save_classifier(self):
        
        import pickle
        # save the classifier
        with open('car_detection_classifier.pkl', 'wb') as fid:
            pickle.dump(self.clf, fid) 
            
        with open('X_scaler.pkl', 'wb') as fid:
            pickle.dump(self.X_scaler, fid) 
        print (" .. classifier saved ")    

    def load_classifier(self):
        import pickle
        # save the classifier
        with open('car_detection_classifier.pkl', 'rb') as fid:
            self.clf = pickle.load(fid)
        
        with open('X_scaler.pkl', 'rb') as fid:
            self.X_scaler = pickle.load(fid)

        print (" .. classifier loaded ")  

training the SVM classifier

In [192]:
cars_classifier_svm = classifier_svm(detector.car_features, detector.notcar_features)
cars_classifier_svm.train()

cars_classifier_svm.save_classifier()
cars_classifier_svm.load_classifier()
.....Scaling...
Start training ... 
4.56 Seconds to train the classifier...
 
Test Accuracy of classifier = 0.989210675752
 .. classifier saved 
 .. classifier loaded 

TESTING SVM CLASSIFIER

In [ ]:
import cv2

print ( "*************************************************************")        
print ( "** TESTING SVM classifier.....") 
print ( "*************************************************************")        


def classify(file):
    image = cv2.imread(file)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    temp_features = extractor.get_all_features(image)
    # Scale extracted features to be fed to classifier
    temp_features = cars_classifier_svm.X_scaler.transform(np.array(temp_features).reshape(1, -1))
    # Predict using your classifier
    prediction = cars_classifier_svm.predict(temp_features)
    return prediction

corrected_predictions = 0
wrong_predictions = 0

######
#### cars 
######
print ( " Predicting CARS")
for folder  in  sorted(glob.glob('train_data/car/*')):
    print ( " Predicting CARS folder " + str(folder))
    for file in glob.glob(folder+ "/*"):
        prediction = classify(file)
        if prediction == "car":
            corrected_predictions +=1
        else:
            wrong_predictions +=1
    print ("                                     ..... correct= {} , wrong={} "\
           .format(corrected_predictions,wrong_predictions ))

######
#### NON cars 
######
print ( " ")
print ( " Predicting NON CARS")
for folder  in  sorted(glob.glob('train_data/non-car/*')):
    print ( " Predicting NON CARS folder " + str(folder))
    for file in glob.glob(folder + "/*"):
        prediction = classify(file)
        if prediction == "non-car":
            corrected_predictions +=1
        else:
            wrong_predictions +=1
    print ("                                     ..... correct= {} , wrong={} "\
           .format(corrected_predictions,wrong_predictions ))

print ( "*************************************************************")        
print ( "** SVM CLASSIFIER ..... ")
print ( "**    Corrected predictions {}".format(corrected_predictions))        
print ( "**    Wrong     predictions {}".format(wrong_predictions))        
print ( "*************************************************************")        

Keras Convolutional Neural Network

In [199]:
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense, Lambda
from keras import backend as K
In [200]:
class classifier_cnn:
    def __init__(self, folder):
        print ( " Initializing.... ")
        self.datagen = ImageDataGenerator(
            featurewise_center=True,
            featurewise_std_normalization=True,
            rotation_range=10,
            width_shift_range=0.1,
            height_shift_range=0.1,
            horizontal_flip=False)

        self.type="CNN"
        
        self.train_datagen = ImageDataGenerator(
                shear_range=0.1,
                zoom_range=0.2,
                horizontal_flip=False)

        self.train_generator = self.train_datagen.flow_from_directory(
            folder,
            target_size=(64, 64),
            batch_size=32,
            class_mode='binary', shuffle=True, color_mode='rgb')
        
        
        
        a = self.train_generator.class_indices
        self.dict = dict(zip(a.values(), a.keys()))

        if K.image_data_format() == 'channels_first':
             input_shape = (3, 64, 64)
        else:
            input_shape = (64, 64, 3)
        print (" input_shape =" + str(input_shape) )

        self.clf =  Sequential()
        self.clf.add(Lambda(lambda x: x/127.5 - 1,  input_shape=input_shape))
        self.clf.add(Conv2D(32, (3, 3)))
        self.clf.add(Activation('relu'))
        self.clf.add(MaxPooling2D(pool_size=(2, 2)))

        self.clf.add(Conv2D(64, (3, 3)))
        self.clf.add(Activation('relu'))
        self.clf.add(MaxPooling2D(pool_size=(2, 2)))

        self.clf.add(Conv2D(64, (2, 2)))
        self.clf.add(Activation('relu'))
        self.clf.add(MaxPooling2D(pool_size=(2, 2)))

#         self.clf.add(Conv2D(64, (3, 3)))
#         self.clf.add(Activation('relu'))
#         self.clf.add(MaxPooling2D(pool_size=(2, 2)))
        
        self.clf.add(Flatten())
        self.clf.add(Dense(64))
        self.clf.add(Activation('relu'))
        self.clf.add(Dropout(0.5))

        self.clf.add(Dense(128))
        self.clf.add(Activation('relu'))
        self.clf.add(Dropout(0.5))

        self.clf.add(Dense(1))
        self.clf.add(Activation('sigmoid'))
        self.clf.compile(loss='binary_crossentropy',  optimizer='adam',metrics=['accuracy'])
        self.clf.summary()
        
    def predict(self,image):

        prediction = self.clf.predict(np.expand_dims(image, axis = 0 )).squeeze() 
#         print ( "prediction = " + str(prediction ))
        if prediction > 0.99:
           prediction = 1 
        else:
           prediction = 0

        #         return self.dict[self.clf.predict(image2) ]
        return self.decode_prediction(prediction)

    
    def decode_prediction (self,prediction):
        return self.dict[prediction]
                 
    def train(self, epochs=20,steps_per_epochs = 200):

        self.clf.fit_generator(
                        self.train_generator,
                        epochs=epochs, steps_per_epoch=steps_per_epochs
                        ,verbose=True)
# ,
#         shuffle=True)



    def save_classifier(self):
        self.clf.save("kerasCNN_model.h5")
        
        import pickle
#         # save the classifier
#         with open('car_detection_classifier.pkl', 'wb') as fid:
#             pickle.dump(self.clf, fid) 
            
        print (" .. classifier saved ")    

    def load_classifier(self):
        import pickle
        # save the classifier
#         with open('car_detection_classifier.pkl', 'rb') as fid:
#             self.clf = pickle.load(fid)
        from keras.models import load_model
        self.clf = load_model("kerasCNN_model.h5")
        
        print (" .. classifier loaded ")  
In [201]:
cars_classifier_cnn = classifier_cnn("train_data")
# cars_classifier_cnn.train(30,250)

# cars_classifier_cnn.save_classifier()
cars_classifier_cnn.load_classifier()
 Initializing.... 
Found 17795 images belonging to 2 classes.
 input_shape =(64, 64, 3)
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lambda_1 (Lambda)            (None, 64, 64, 3)         0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 62, 62, 32)        896       
_________________________________________________________________
activation_1 (Activation)    (None, 62, 62, 32)        0         
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 29, 29, 64)        18496     
_________________________________________________________________
activation_2 (Activation)    (None, 29, 29, 64)        0         
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 14, 14, 64)        0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 13, 13, 64)        16448     
_________________________________________________________________
activation_3 (Activation)    (None, 13, 13, 64)        0         
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 6, 6, 64)          0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 2304)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 64)                147520    
_________________________________________________________________
activation_4 (Activation)    (None, 64)                0         
_________________________________________________________________
dropout_1 (Dropout)          (None, 64)                0         
_________________________________________________________________
dense_2 (Dense)              (None, 128)               8320      
_________________________________________________________________
activation_5 (Activation)    (None, 128)               0         
_________________________________________________________________
dropout_2 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_3 (Dense)              (None, 1)                 129       
_________________________________________________________________
activation_6 (Activation)    (None, 1)                 0         
=================================================================
Total params: 191,809
Trainable params: 191,809
Non-trainable params: 0
_________________________________________________________________
 .. classifier loaded 

TESTING CNN CLASSIFIER

In [ ]:
# from keras.preprocessing import image

# test_image = cv2.imread("train_data/car/GTI_Far/image0010.png")
# test_image = cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)
# plt.imshow(test_image)
# # print(test_image)
# plt.title(cars_classifier_cnn.predict(test_image))
# plt.show()
In [ ]:
# def classify(file):
#     test_image = cv2.imread(file)
#     test_image = cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)
#     prediction = cars_classifier_cnn.predict(test_image)
#     return prediction

# corrected_predictions = 0
# wrong_predictions = 0

# ######
# #### cars 
# ######
# print ( " Predicting CARS")
# for folder  in  sorted(glob.glob('train_data/car/*')):
#     print ( " Predicting CARS folder " + str(folder))
#     for file in glob.glob(folder+ "/*"):
#         prediction = classify(file)
#         if prediction == "car":
#             corrected_predictions +=1
#         else:
#             wrong_predictions +=1
#     print ("                                     ..... correct= {} , wrong={} "\
#            .format(corrected_predictions,wrong_predictions ))

# ######
# #### NON cars 
# ######
# print ( " ")
# print ( " Predicting NON CARS")
# for folder  in  sorted(glob.glob('train_data/non-car/*')):
#     print ( " Predicting NON CARS folder " + str(folder))
#     for file in glob.glob(folder + "/*"):
#         prediction = classify(file)
#         if prediction == "non-car":
#             corrected_predictions +=1
#         else:
#             wrong_predictions +=1
#     print ("                                     ..... correct= {} , wrong={} "\
#            .format(corrected_predictions,wrong_predictions ))

# print ( "*************************************************************")        
# print ( "** CONV NET ..... ")
# print ( "**    Corrected predictions {}".format(corrected_predictions))        
# print ( "**    Wrong     predictions {}".format(wrong_predictions))        
# print ( "*************************************************************")        

SLIDING WINDOW COMPARISON CNN / SVM/ NEURAL NETWORK

In [84]:
class window_extractor:
    def __init__(self, image,               \
                 window_dimension=32,  \
                 x_start_stop=[None, None], \
                 y_start_stop=[350, None], \
                 x_overlap=0.5, y_overlap=0.5):
        
        self.image           = image
        self.xy_window       = (window_dimension, window_dimension)
        self.xy_overlap      = (x_overlap, y_overlap)
        self.x_start_stop    = x_start_stop
        self.y_start_stop    = y_start_stop
        
        # If x and/or y start/stop positions not defined, set to image size
        #     print (x_start_stop)
        if self.x_start_stop[0] == None:
            self.x_start_stop[0] = 0
        if self.x_start_stop[1] == None:
            self.x_start_stop[1] = self.image.shape[1]
        if self.y_start_stop[0] == None:
            self.y_start_stop[0] = 0
        if self.y_start_stop[1] == None:
            self.y_start_stop[1] = self.image.shape[0]

        # Compute the span of the region to be searched    
        self.xspan = self.x_start_stop[1] - self.x_start_stop[0]
        self.yspan = self.y_start_stop[1] - self.y_start_stop[0]
        
        # Compute the number of pixels per step in x/y
        self.nx_pix_per_step = np.int(self.xy_window[0]*(1 - self.xy_overlap[0]))
        self.ny_pix_per_step = np.int(self.xy_window[1]*(1 - self.xy_overlap[1]))
        
        # Compute the number of windows in x/y
        self.nx_buffer = np.int(self.xy_window[0]*(self.xy_overlap[0]))
        self.ny_buffer = np.int(self.xy_window[1]*(self.xy_overlap[1]))
        self.nx_windows = np.int((self.xspan-self.nx_buffer)/self.nx_pix_per_step) 
        self.ny_windows = np.int((self.yspan-self.ny_buffer)/self.ny_pix_per_step) 



    def get_windows(self):
        # Initialize a list to append window positions to
        self.window_list = []
        # Loop through finding x and y window positions
        # Note: you could vectorize this step, but in practice
        # you'll be considering windows one by one with your
        # classifier, so looping makes sense
        for ys in range(self.ny_windows):
            for xs in range(self.nx_windows):
                # Calculate window position
                startx = xs*self.nx_pix_per_step + self.x_start_stop[0]
                endx = startx + self.xy_window[0]
                starty = ys*self.ny_pix_per_step + self.y_start_stop[0]
                endy = starty + self.xy_window[1]
                # Append window position to list
                ####
                ## check if the point is inside the mask
                ####
#                 print ( " window startx = {}, endx = {}, starty = {}, endy = {}".format(startx,endx,starty,endy))
                check = inside_polygon (img=self.image, 
                                               x_pos = startx ,    # --> x1 position 
                                               y_pos=  starty ,    # --> y1 position 
                                               points=vertices) == True
                if check == True:
#                     print (" point startx = {},starty= {} are inside of the windows".format(startx,starty))
                    self.window_list.append([startx, starty, endx, endy])
#                 else:
#                     print ( " point outside of the mask")
        # Return the list of windows
        return self.window_list
    
    def draw_boxes(self,hot_windows, color=(0, 0, 255), thick=6):
        # Make a copy of the image
        imcopy = np.copy(self.image)
        tmp_window_list = hot_windows
        for bbox in tmp_window_list:
#             print ("bbox = " + str(bbox))
            # Draw a rectangle given bbox coordinates
            cv2.rectangle(imcopy, (bbox[0], bbox[1]),(bbox[2], bbox[3]), color, thick)
        # Return the image copy with boxes drawn
        return imcopy

    

Classifiers comparison

In [ ]:
def test_comparison(filename, input_classifier):
    test_image = cv2.imread(filename)
    test_image = cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)
    test_image = region_of_interest(test_image)

    windows = []

    windows_ext = window_extractor(test_image, 
                                   window_dimension=64, 
                                   x_overlap = 0.8,
                                   y_overlap = 0.8,
                                   x_start_stop = [340,None],
                                   y_start_stop = [390,510])

    for x in windows_ext.get_windows():
         windows.append(x)

    tmp_image_windows = window_extractor(test_image).draw_boxes(windows)


    hot_windows = []
    for window in windows:
        test_img = test_image[window[1]:window[3], window[0]:window[2]]
        test_img = cv2.resize(test_img, (64,64))
        
        if input_classifier.type == "CNN":
            prediction = input_classifier.predict(test_img)
            if prediction == "car":
                hot_windows.append(window)
        else:
            features         = extractor.get_all_features(test_img)
            features_reshaped = np.array(features).reshape(1, -1)
            test_features     = input_classifier.X_scaler.transform(np.array(features).reshape(1, -1))
            prediction        = input_classifier.clf.predict(test_features)

            if prediction >.9:
                hot_windows.append(window)

    tmp_image_hot = window_extractor(test_image).draw_boxes(hot_windows)
    
    return test_image, tmp_image_hot, hot_windows, tmp_image_windows

test_file = "test_images2/image4.jpg"

### SVM
test_image, image_hot_svm, hot_windows_svm, tmp_image_windows = test_comparison(test_file, cars_classifier_svm)

f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(24, 9))
f.tight_layout()

ax1.imshow(region_of_interest(test_image))
ax1.set_title("SVM - Mask ")
ax1.axis('off')

ax2.imshow(tmp_image_windows)
ax2.set_title("SVM - Windows ")
ax2.axis('off')

ax3.imshow(image_hot_svm)
ax3.set_title("SVM - Hot Windows  " )
ax3.axis('off')
plt.show()


### CNN
test_image, image_hot_cnn, hot_windows_cnn, tmp_image_windows = test_comparison(test_file, cars_classifier_cnn)

f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(24, 9))
f.tight_layout()

ax1.imshow(region_of_interest(test_image))
ax1.set_title("CNN - Mask ")
ax1.axis('off')

ax2.imshow(tmp_image_windows)
ax2.set_title("CNN - Windows ")
ax2.axis('off')

ax3.imshow(image_hot_svm)
ax3.set_title("CNN - Hot Windows  " )
ax3.axis('off')
plt.show()

### NEURAL NETWORK
test_image, image_hot_hog_nn, hot_windows_hog_nn, tmp_image_windows = test_comparison(test_file, cars_classifier_hog_nn)

f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(24, 9))
f.tight_layout()

ax1.imshow(region_of_interest(test_image))
ax1.set_title("NN - Mask ")
ax1.axis('off')

ax2.imshow(tmp_image_windows)
ax2.set_title("NN - Windows ")
ax2.axis('off')

ax3.imshow(image_hot_svm)
ax3.set_title("NN - Hot Windows  " )
ax3.axis('off')
plt.show()





# plt.title(" Convolutional Neural Network ")
In [ ]:
test_file = "test_images2/image4.jpg"

test_image = cv2.imread(test_file)
test_image = cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)
test_image = region_of_interest(test_image)
color=(0, 0, 255)
thick=6
cv2.rectangle(test_image, (340, 404),(390, 454), color, thick)
plt.imshow(test_image)
plt.show()
print (inside_polygon (img=test_image, x_pos = 340 , y_pos= 404 , points=vertices))

Now defining the Heat map to include the recognized Car in a Box...

In [175]:
from scipy.ndimage.measurements import label

class heat_map:
    def __init__(self, boxes, image,discard_without_centroids=True, debug=False):
            self.boxes = boxes
            self.heatmap = np.zeros_like(image[:,:,0]).astype(np.float)
            self.image = np.copy(image)
            self.discard_without_centroids = discard_without_centroids
            self.debug = debug
                
    def add_heat(self):
        for box in self.boxes :
            # Assuming each "box" takes the form [x1, y1, x2, y2]
#             print ("")
#             print ("*******************")
#             print ("****add_heat " +str(box))
#             print ("*******************")
#             print ("")

            self.heatmap[int(box[1]):int(box[3]), int(box[0]):int(box[2])] += 1

        # Return updated heatmap

    def apply_threshold(self):
        # Zero out pixels below the threshold
        self.heatmap[self.heatmap < 2] = 0

    def get_labels(self):
        if self.debug:
            print ( "##############################")
            print ( "#      get_labels   "  )
            print ( "##############################")
            print ( "#")

            plt.imshow(self.heatmap,cmap='hot')    
            plt.title("get_labels")
            plt.show()
            
        self.labels = label(self.heatmap)

        ######################################################
        ### sort labels
        #### need to guarantee that the labelles boxes comes out in the same order always
        ######################################################

        self.label_boxes=[]
        previous_bbox0 = 0
        previous_bbox2 = 0 
        for car_number in range(1, self.labels[1]+1):
            if self.debug:print ( " car number ----->>>>>> " + str(car_number))
            # Find pixels with each car_number label value
            nonzero = (self.labels[0] == car_number).nonzero()

            # Identify x and y values of those pixels
            nonzeroy = np.array(nonzero[0])
            nonzerox = np.array(nonzero[1])  
            if np.min(nonzerox) < np.max(nonzerox) and \
               np.min(nonzeroy) < np.max(nonzeroy):
                # Define a bounding box based on min/max x and y\
                
                #### avoid double boxes
                if np.abs(np.min(nonzerox) - previous_bbox0) > 50 and \
                   np.abs(np.min(nonzerox) - previous_bbox2) > 10:
                    bbox = ([np.min(nonzerox), np.min(nonzeroy),np.max(nonzerox), np.max(nonzeroy)])
                    if not self.hot_boxes_discard(bbox):
                        self.label_boxes.append(bbox)
                        previous_bbox0 = np.min(nonzerox)
                        previous_bbox2 = np.max(nonzerox)


            
        if self.debug:
            print (  " ---------------------------- " )
            print (  " ---------------------------- ")
            print (  " ---------------------------- ")
            print (" BEFORE sort. " + str(self.label_boxes))


        self.label_boxes = np.array(self.label_boxes)
        self.label_boxes = sorted(self.label_boxes, key=lambda a_entry: a_entry[0])
        if self.debug:
            print (" after sort. " + str(self.label_boxes))
            print (  " ---------------------------- ")
            print (  " ---------------------------- ")


    def search_labeled_bboxes(self):
        ######################################
        ### calculate the labels             #
        ######################################
        if self.debug:print ( " ********* FIRST get_labels ")

        self.get_labels()
        #
        self.boxes = []
        self.heatmap_new = np.zeros_like(self.image[:,:,0]).astype(np.float)

        for car_number, bbox in enumerate(self.label_boxes):
            # example bbox = bbox[0] 884 bbox[1] 400 bbox[2] 995 bbox[3] 494
            #                 x1           y1           x2           y2
            bbox_heatmap_values = self.heatmap[bbox[1]:bbox[3], bbox[0]:bbox[2] ]
            try:
                box_average = np.average(bbox_heatmap_values)
                box_max = np.max(bbox_heatmap_values)
                ratio = box_max / box_average
            except:
                box_average = 0 
                box_max = 0
                ratio = 0

            if self.debug:
                print ("----------- _-----------------   ------------------")
                print ("----------- centroids       ------------------")
                print ("------ NEW CAR IDENTIFIED ("+str(car_number + 1) +") " + str(bbox))
                print (" average bbox_heatmap_values " + str(box_average))
                print (" max.   bbox_heatmap_values  " + str(box_max))
                print (" ratio                       " + str(ratio))
                print ("--")
                print ("")
            # Box discard - dimension that are improbable to  contain cars 
#                ( box_average == box_max and self.discard_without_centroids):

            if self.hot_boxes_discard(bbox) == True or \
                ( ratio < 1.5 and self.discard_without_centroids):

                if self.debug:
                    print (" discard without CENTROID !!!!!!!!!!!!!" + str(ratio))
                    print (" putting to zero at "+str(bbox))
                self.heatmap_new[bbox[1]:bbox[3], bbox[0]:bbox[2] ]   = 0  
            
            else:
                ################################
                # thresholding the box
                ################################
                bbox_heatmap_values[bbox_heatmap_values <= box_average*.7 ] = 0
                if self.debug:
                    print ("self.heatmap[bbox[1]:bbox[3], bbox[0]:bbox[2] ]  = bbox_heatmap_values ")
                    print ("self.heatmap[ " + str(bbox[1]) + ": " + str(bbox[3]) + "," +
                        str(bbox[0]) + ":" + str(bbox[2]) +"]  = bbox_heatmap_values ")

                bbox_heatmap_values [bbox_heatmap_values > box_average*.7 ] = 255
                self.heatmap_new[bbox[1]:bbox[3], bbox[0]:bbox[2] ]  = bbox_heatmap_values   
                
                #                            x1       y1        x2       y2 
        self.heatmap = self.heatmap_new
        if self.debug:
            plt.imshow(self.heatmap_new)
            plt.title("FIRST HEATMAP")
            plt.show()
        ######################################
        ### calculate the labels             #
        ######################################
        if self.debug:print ( " ********* second get_labels after thresholding ")
        self.get_labels()
        #

        ######################################################
        ## recalculate the boxes after thresholding          #
        ######################################################

        for car_number, bbox in enumerate(self.label_boxes):
            if self.debug:print ( " inserting self.boxes.append(bbox " + str(bbox))
            self.boxes.append(bbox)
            
    def draw_labeled_bboxes(self):
        for bbox in self.boxes:
            if self.debug:
                print ("draw_labeled_bboxes "  + "int(bbox[0])" + str(int(bbox[0])) + " - " 
                                           + "int(bbox[1])" + str(int(bbox[1])) + " - " 
                                           + "int(bbox[2])" + str(int(bbox[2])) + " - " 
                                           + "int(bbox[3])" + str(int(bbox[3])) ) 
            cv2.rectangle(self.image, (int(bbox[0]), int(bbox[1])),(int(bbox[2]), int(bbox[3])), (0,255,0), 6)

    
    def hot_boxes_discard(self, box):
        ### discard hot boxes that are unlikely to contain a car because of false proportions
        box = np.copy(box).ravel()
        
        x_dimension = np.abs(box[2] - box[0])
        y_dimension = np.abs(box[3] - box[1])
        discard = False
        
#         print ( "x_dimension = " + str(x_dimension) + " - y_dimension = " + str(y_dimension))
#         print ("y_position1 = " + str(box[1]) + " - y_position2 = " + str(box[3]))
        if y_dimension > 0:
            ratio = x_dimension / y_dimension
            if ratio > 6:
                if self.debug: print ("discarded because of ratio " + str(ratio) )
                discard = True

        # box[3] y_position2 --> bottom down 
        # box[0] x_position_1 --> --> right part of the image 
        if self.debug:print (" hot_boxes_discard " + str(box) + ". -- box[0] = "  + str(box[0]))
        if box[3]    > 500 or box[0] > 1000 :                 
            # BOX TOO SMALL Too small for the bottom part of the frame
            if y_dimension < 70 or x_dimension < 70:     
                if self.debug:print ( " discarded because too small " + str(y_dimension) + ","+str(x_dimension))
                discard=True

        if box[3] > 670:
            ### the boxes are " touching" the front of the car --> discard this unreal situation
            discard=True
        return discard

Applying heatmap to SVM

In [ ]:
 
In [ ]:
test_image = cv2.imread("test_images2/image4.jpg")
test_image = cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)
    
heat = heat_map(boxes=hot_windows_svm, image=test_image)
heat.add_heat()
heat.apply_threshold(threshold=2)
heat.draw_labeled_bboxes()

#################
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()

ax1.imshow(heat.heatmap,cmap='hot')    
ax1.set_title("SVM heatmap ")
ax1.axis('off')

ax2.imshow(heat.image)  
ax2.set_title("SVM boxes ")
ax2.axis('off')
##################
plt.show()

Applying heatmap to HOG Neural Network

In [ ]:
test_image = cv2.imread("test_images2/image4.jpg")
test_image = cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)
    
heat = heat_map(hot_windows_hog_nn, test_image)
heat.add_heat()
heat.apply_threshold(threshold=np.average(heat.heatmap[heat.heatmap> 0 ])*.3)
heat.draw_labeled_bboxes()

#################
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()

ax1.imshow(heat.heatmap,cmap='hot')    
ax1.set_title("HOG NN heatmap ")
ax1.axis('off')

ax2.imshow(heat.image)  
ax2.set_title("HOG NN boxes ")
ax2.axis('off')
##################
plt.show()

Applying heatmap to Convolutional Neural Network

In [ ]:
test_image = cv2.imread("test_images2/image4.jpg")
test_image = cv2.cvtColor(test_image, cv2.COLOR_BGR2RGB)
    
heat = heat_map(hot_windows_cnn, test_image)
heat.add_heat()
heat.apply_threshold(threshold=0)
heat.draw_labeled_bboxes()

#################
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()

ax1.imshow(heat.heatmap,cmap='hot')    
ax1.set_title("Convolutional Neural Network heatmap ")
ax1.axis('off')

ax2.imshow(heat.image)  
ax2.set_title("Convolutional Neural Network boxes ")
ax2.axis('off')
##################
plt.show()

Defining the class PIPELINE

In [185]:
class pipeline:
    def __init__(self, extractor, cars_classifier, debug=False, debug_image=False):
        self.detector = image_car_detector(extractor)
        self.cars_classifier = cars_classifier
        self.cars_classifier.load_classifier()
        self.debug= debug
        self.boxes_history = []
        self.discarded = 0

        self.debug_image = debug_image
        
       
    def windows_creation(self):
            self.windows = []

                
#             windows_ext = window_extractor(self.image, 
#                                    window_dimension=60, 
#                                    x_overlap = 0.5,
#                                    y_overlap = 0.6,
#                                    x_start_stop = [630,1200],
#                                    y_start_stop = [380,530])

#             for x in windows_ext.get_windows():
#                  self.windows.append(x)

            windows_ext = window_extractor(self.image, 
                                   window_dimension=65, 
                                   x_overlap = 0.5,
                                   y_overlap = 0.5,
                                   x_start_stop = [730,1200],
                                   y_start_stop = [380,630])

            for x in windows_ext.get_windows():
                 self.windows.append(x)

            windows_ext = window_extractor(self.image, 
                                   window_dimension=50, 
                                   x_overlap = 0.5,
                                   y_overlap = 0.5,
                                   x_start_stop = [730,1000],
                                   y_start_stop = [380,530])

            for x in windows_ext.get_windows():
                 self.windows.append(x)


#             windows_ext = window_extractor(self.image, 
#                                    window_dimension=85, 
#                                    x_overlap = 0.5,
#                                    y_overlap = 0.5,
#                                    x_start_stop = [930,1200],
#                                    y_start_stop = [380,530])

#             for x in windows_ext.get_windows():
#                  self.windows.append(x)

                    
                    

#             windows_ext = window_extractor(self.image, 
#                                    window_dimension=110, 
#                                    x_overlap = 0.7,
#                                    y_overlap = 0.7,
#                                    x_start_stop = [850,1500],
#                                    y_start_stop = [330,700])

#             for x in windows_ext.get_windows():
#                  self.windows.append(x)

            windows_ext = window_extractor(self.image, 
                                   window_dimension=130, 
                                   x_overlap = 0.7,
                                   y_overlap = 0.7,
                                   x_start_stop = [850,1500],
                                   y_start_stop = [330,700])

            for x in windows_ext.get_windows():
                 self.windows.append(x)

          

    def search_cars_by_steps(self,image):
        
        self.image = image 

        self.windows = []
        self.hot_windows = []
        
        ########
        # creating a list of boxes
        ########
        
        
        tmp_image = self.windows_creation()
        if self.debug_image:
            image_tmp = window_extractor(self.image).draw_boxes(self.windows)
            plt.imshow(region_of_interest(image_tmp)    )
            plt.axis("off")
            plt.title(" Boxes drawn on the image ")
            plt.show()

            

        ########
        # search for car detection in the above calculated boxes
        ########
        self.hot_windows = []
        self.hot_windows = self.detector.search_windows(self.image, self.windows, cars_classifier=self.cars_classifier)
        if self.debug_image:
            tmp_image_hot = window_extractor(self.image).draw_boxes(self.hot_windows)
            plt.imshow(region_of_interest(tmp_image_hot)  )
            plt.axis("off")
            plt.title(" Car boxes detected ")
            plt.show()

            
        ########
        # heat map
        ########

        self.heat = heat_map(self.hot_windows, self.image, discard_without_centroids=True, debug=self.debug_image)
        

        self.heat.add_heat()
        self.heat.apply_threshold()

        ########
        # recalculate boxes on the basis of the filtered heatmap
        ######## 
        self.heat.search_labeled_bboxes()

        number_of_boxes =  len(np.array(self.heat.boxes))   

#         self.heat.boxes = np.array(self.heat.boxes).reshape(number_of_boxes,4)
        
        #####################
        #### insert  BOXES into the history
        #####################
        self.insert_boxes_history(self.heat.boxes)

        #####################
        #### AVERAGING WITH HISTORY
        #####################
        if self.debug_image:
            print ("#####################        ")
            print ("#### HISTORY  ")
            print ("#####################        ")
            print ( str(self.boxes_history))
            print ("#####################        ")
            print ("#### AVERAGING WITH HISTORY  ")
            print ("#####################        ")

        self.heat.boxes = []
        for i, histo in enumerate(self.boxes_history):
            box = self.get_average(histo)
            self.heat.boxes.append(box)
  
        if self.debug_image:print ("#### self.heat.boxes =  " + str(self.heat.boxes))
                
        if self.debug_image:
            plt.imshow(self.heat.heatmap,cmap='hot')    
            plt.axis("off")
            plt.title("HEAT MAP AFTER AVERAGING")
            plt.show()

        #####################
        #### DRAW BOXES on the input image
        #####################
        self.heat.draw_labeled_bboxes()
        if self.debug_image:
            plt.imshow(self.heat.image)    
            plt.axis("off")
            plt.title(" FINAL IMAGE")

            plt.show()


        if self.debug:
            print ( " ")
            print (  " ------- actual self.heat.boxes = " )
            print (str(self.heat.boxes))

        return self.heat.image

#     def calc_RMSE(self, vector1, vector2):
#         sum_squared_diff = 0
#         n = 0
        
#         if self.debug:
#             print (  " vector1 = " + str(vector1))
#             print (  " vector2 = " + str(vector2))

#         for element1, element2 in zip(vector1, vector2):
#             n +=1
#             sum_squared_diff += (element1 - element2) **2
#         mean_squared_error_result = np.sqrt(sum_squared_diff / n)
#         return mean_squared_error_result

    def get_average(self,histo):
        elements = len(histo)
        if self.debug_image:
            print (" ")
            print (" def get_average ")
            print ( "   ---> elements " + str(elements))
        weights = list(range(elements, 0, -1))
        if self.debug_image:
            print ( "   ---> weights " + str(weights))
            print(" ")
        
        return np.average(histo, axis=0, weights = weights)
        
    def insert_boxes_history(self, boxes):
        if self.debug_image:
            print ( " ")
            print ( " ")
            print ( " ")
            print ( " ********************************************")
            print ( " **********. insert_boxes_history")
            print ( "trying to insert " + str(boxes))

        for box in boxes:
            found = False
            for i, histo in enumerate(self.boxes_history):
                self.get_average(histo)
                if np.abs(self.get_average(histo)[0] - box[0]) < 80 or \
                   ( np.abs(self.get_average(histo)[1] - box[1]) < 80 and
                     np.abs(self.get_average(histo)[0] - box[0]) < 200 ) : 
                        
                    self.boxes_history[i].append(box)
                    if self.debug_image:print ( " ... inserting into box number : " + str(i) + " " + str(box) )

                    if self.debug_image:print ( " self.boxes_history " + str(self.boxes_history[i]))
                    self.boxes_history[i] = self.boxes_history[i][-20:]
                    if self.debug_image:print ( " *** self.boxes_history " + str(self.boxes_history[i]))


                    found = True
            if found == False:
                self.boxes_history.append([box])
                if self.debug_image:print ( " ... inserting into NEW box number : " )
        if self.debug_image:
            print ( " ***************** HISTORY SITUATION  **********")
            for histo_box in self.boxes_history:
                print ( " ----- ")
                print ( str(histo_box))
                print ( " - ")

            print ( " ")
            print ( " ")

                
             
    def calc_history_average(self):
        
        averages = []
        for box in self.boxes_history:
            average = np.average(box, axis = 0)
            averages.append(average)
            


        return averages

    

Convolutional Neural Network Test Images

In [205]:
import cv2
import os


for image_name  in  sorted(glob.glob('test_images/*')):
    pipeline1 = pipeline(extractor, 
                         cars_classifier=cars_classifier_cnn,
                         debug=False, 
                         debug_image=False)

    image = cv2.imread(image_name)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    image_heat = pipeline1.search_cars_by_steps(image)
#     print ( " saving .. " + "output_images_cnn/"+ os.path.split(image_name)[-1])
    image_heat = cv2.resize(image_heat, (int(image.shape[1]/4), int(image.shape[0]/4 ) ))  
    cv2.imwrite("output_images_cnn/"+ os.path.split(image_name)[-1], cv2.cvtColor(image_heat, cv2.COLOR_RGB2BGR) )
    
    plt.title(" ConvNet Classifier  " + str(image_name))
    plt.axis("off")
    plt.imshow(image_heat)
    plt.show()
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 

SVM classifier + HOG Test Images

In [210]:
import cv2


for image_name  in  sorted(glob.glob('test_images/*')):
    pipeline1 = pipeline(extractor, 
                     cars_classifier=cars_classifier_svm,
                     debug=False, 
                     debug_image=False)
    
    image = cv2.imread(image_name)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    image_heat = pipeline1.search_cars_by_steps(image)
#     print ( " saving .. " + "output_images_svm/"+ os.path.split(image_name)[-1])
    image_heat = cv2.resize(image_heat, (int(image.shape[1]/4), int(image.shape[0]/4 ) ))  
    cv2.imwrite("output_images_svm/"+ os.path.split(image_name)[-1], cv2.cvtColor(image_heat, cv2.COLOR_RGB2BGR) )
    
    plt.title(" SVM classifier + HOG  " + str(image_name))
    plt.axis("off")
    plt.imshow(image_heat)
    plt.show()
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 
 .. classifier loaded 

---------------------------------------------------------

Neural Network classifier + HOG Test Images

---------------------------------------------------------

In [ ]:
import cv2

for image_name  in  sorted(glob.glob('test_images/*')):
    pipeline1 = pipeline(extractor, 
                     cars_classifier=cars_classifier_hog_nn,
                     average_moltiplier=0.7, 
                     debug=False, 
                     debug_image=True)

    image = cv2.cvtColor(cv2.imread(image_name), cv2.COLOR_BGR2RGB)
    image_heat = pipeline1.search_cars_by_steps(image)
#     print ( " saving .. " + "output_images_hog_nn/"+ os.path.split(image_name)[-1])
    image_heat = cv2.resize(image_heat, (int(image.shape[1]/4), int(image.shape[0]/4 ) ))  
    cv2.imwrite("output_images_hog_nn/"+ os.path.split(image_name)[-1], cv2.cvtColor(image_heat, cv2.COLOR_RGB2BGR) )

    plt.title(" Neural Network classifier + HOG" + str(image_name))
    plt.imshow(image_heat)
    plt.axis("off")
    plt.show()

ConvNet on Test video

In [ ]:
pipeline1 = pipeline(extractor, 
                     cars_classifier=cars_classifier_cnn,
                     average_moltiplier=0.4, 
                     debug=False, 
                     debug_image=False)

from moviepy.editor import VideoFileClip
output_video_name = 'test_video_output.mp4'
clip1 = VideoFileClip("test_video.mp4")
clip2 = clip1.subclip(0,2)
output_video = clip1.fl_image(lambda x: pipeline1.search_cars_by_steps(x)) #NOTE: this function expects color images!!
%time output_video.write_videofile(output_video_name, audio=False)
print ("Completed")

Project Video - CONV NET

In [203]:
pipeline1 = pipeline(extractor, 
                     cars_classifier=cars_classifier_cnn,
                     debug=False, 
                     debug_image=False)

from moviepy.editor import VideoFileClip
output_video_name = 'project_video_output_cnn.mp4'
clip1 = VideoFileClip("project_video.mp4")
# clip2 = clip1.subclip(23,30)
output_video = clip1.fl_image(lambda x: pipeline1.search_cars_by_steps(x)) #NOTE: this function expects color images!!
%time output_video.write_videofile(output_video_name, audio=False,verbose=False)
print ("Completed")
 .. classifier loaded 
  0%|          | 0/1261 [00:00<?, ?it/s]
  0%|          | 1/1261 [00:00<16:34,  1.27it/s]
  0%|          | 2/1261 [00:01<16:45,  1.25it/s]
  0%|          | 3/1261 [00:02<16:19,  1.28it/s]
  0%|          | 4/1261 [00:03<15:41,  1.34it/s]
100%|█████████▉| 1260/1261 [20:42<00:01,  1.05s/it]
CPU times: user 32min 13s, sys: 2min 17s, total: 34min 30s
Wall time: 20min 44s
Completed

---------------------------------------------------------

Project Video - SVM

---------------------------------------------------------

In [194]:
pipeline1 = pipeline(extractor, 
                     cars_classifier=cars_classifier_svm,
                     debug=False, 
                     debug_image=False)

from moviepy.editor import VideoFileClip
output_video_name = 'project_video_output_svm.mp4'
clip1 = VideoFileClip("project_video.mp4")
clip2 = clip1.subclip(46,48)
output_video = clip1.fl_image(lambda x: pipeline1.search_cars_by_steps(x)) #NOTE: this function expects color images!!
%time output_video.write_videofile(output_video_name, audio=False)
print ("Completed")
 .. classifier loaded 
[MoviePy] >>>> Building video project_video_output_svm.mp4
[MoviePy] Writing video project_video_output_svm.mp4
  0%|          | 0/1261 [00:00<?, ?it/s]
  0%|          | 1/1261 [00:00<17:07,  1.23it/s]
  0%|          | 2/1261 [00:01<17:16,  1.22it/s]
  0%|          | 3/1261 [00:02<17:09,  1.22it/s]
  0%|          | 4/1261 [00:03<16:55,  1.24it/s]
  0%|          | 5/1261 [00:04<16:37,  1.26it/s]
  0%|          | 6/1261 [00:04<16:22,  1.28it/s]
  1%|          | 7/1261 [00:05<16:16,  1.28it/s]
  1%|          | 8/1261 [00:06<16:07,  1.30it/s]
  1%|          | 9/1261 [00:07<16:02,  1.30it/s]
  1%|          | 10/1261 [00:07<15:51,  1.32it/s]
  1%|          | 11/1261 [00:08<15:43,  1.32it/s]
  1%|          | 12/1261 [00:09<15:39,  1.33it/s]
  1%|          | 13/1261 [00:10<15:34,  1.34it/s]
  1%|          | 14/1261 [00:10<15:38,  1.33it/s]
  1%|          | 15/1261 [00:11<15:34,  1.33it/s]
  1%|▏         | 16/1261 [00:12<15:35,  1.33it/s]
  1%|▏         | 17/1261 [00:13<15:32,  1.33it/s]
  1%|▏         | 18/1261 [00:13<15:30,  1.34it/s]
  2%|▏         | 19/1261 [00:14<15:27,  1.34it/s]
  2%|▏         | 20/1261 [00:15<15:34,  1.33it/s]
  2%|▏         | 21/1261 [00:16<15:35,  1.33it/s]
  2%|▏         | 22/1261 [00:16<15:31,  1.33it/s]
  2%|▏         | 23/1261 [00:17<15:29,  1.33it/s]
  2%|▏         | 24/1261 [00:18<15:31,  1.33it/s]
  2%|▏         | 25/1261 [00:19<15:28,  1.33it/s]
  2%|▏         | 26/1261 [00:19<15:36,  1.32it/s]
  2%|▏         | 27/1261 [00:20<15:26,  1.33it/s]
  2%|▏         | 28/1261 [00:21<15:16,  1.35it/s]
  2%|▏         | 29/1261 [00:22<15:16,  1.34it/s]
  2%|▏         | 30/1261 [00:22<15:13,  1.35it/s]
  2%|▏         | 31/1261 [00:23<15:14,  1.35it/s]
  3%|▎         | 32/1261 [00:24<15:09,  1.35it/s]
  3%|▎         | 33/1261 [00:24<15:05,  1.36it/s]
  3%|▎         | 34/1261 [00:25<15:03,  1.36it/s]
  3%|▎         | 35/1261 [00:26<15:04,  1.35it/s]
  3%|▎         | 36/1261 [00:27<15:06,  1.35it/s]
  3%|▎         | 37/1261 [00:27<15:06,  1.35it/s]
  3%|▎         | 38/1261 [00:28<15:03,  1.35it/s]
  3%|▎         | 39/1261 [00:29<15:07,  1.35it/s]
  3%|▎         | 40/1261 [00:30<15:08,  1.34it/s]
  3%|▎         | 41/1261 [00:30<15:07,  1.34it/s]
  3%|▎         | 42/1261 [00:31<15:06,  1.35it/s]
  3%|▎         | 43/1261 [00:32<15:13,  1.33it/s]
  3%|▎         | 44/1261 [00:33<15:07,  1.34it/s]
  4%|▎         | 45/1261 [00:33<15:10,  1.34it/s]
  4%|▎         | 46/1261 [00:34<15:11,  1.33it/s]
  4%|▎         | 47/1261 [00:35<15:13,  1.33it/s]
  4%|▍         | 48/1261 [00:36<15:12,  1.33it/s]
  4%|▍         | 49/1261 [00:36<15:11,  1.33it/s]
  4%|▍         | 50/1261 [00:37<15:11,  1.33it/s]
  4%|▍         | 51/1261 [00:38<15:09,  1.33it/s]
  4%|▍         | 52/1261 [00:39<15:09,  1.33it/s]
  4%|▍         | 53/1261 [00:39<15:06,  1.33it/s]
  4%|▍         | 54/1261 [00:40<15:07,  1.33it/s]
  4%|▍         | 55/1261 [00:41<15:07,  1.33it/s]
  4%|▍         | 56/1261 [00:42<15:11,  1.32it/s]
  5%|▍         | 57/1261 [00:42<15:09,  1.32it/s]
  5%|▍         | 58/1261 [00:43<15:06,  1.33it/s]
  5%|▍         | 59/1261 [00:44<15:06,  1.33it/s]
  5%|▍         | 60/1261 [00:45<15:06,  1.32it/s]
  5%|▍         | 61/1261 [00:45<15:00,  1.33it/s]
  5%|▍         | 62/1261 [00:46<15:01,  1.33it/s]
  5%|▍         | 63/1261 [00:47<15:03,  1.33it/s]
  5%|▌         | 64/1261 [00:48<14:58,  1.33it/s]
  5%|▌         | 65/1261 [00:48<14:55,  1.34it/s]
  5%|▌         | 66/1261 [00:49<14:56,  1.33it/s]
  5%|▌         | 67/1261 [00:50<15:02,  1.32it/s]
  5%|▌         | 68/1261 [00:51<15:01,  1.32it/s]
  5%|▌         | 69/1261 [00:51<14:56,  1.33it/s]
  6%|▌         | 70/1261 [00:52<14:54,  1.33it/s]
  6%|▌         | 71/1261 [00:53<14:55,  1.33it/s]
  6%|▌         | 72/1261 [00:54<14:55,  1.33it/s]
  6%|▌         | 73/1261 [00:54<14:52,  1.33it/s]
  6%|▌         | 74/1261 [00:55<14:58,  1.32it/s]
  6%|▌         | 75/1261 [00:56<14:58,  1.32it/s]
  6%|▌         | 76/1261 [00:57<14:52,  1.33it/s]
  6%|▌         | 77/1261 [00:58<14:52,  1.33it/s]
  6%|▌         | 78/1261 [00:58<14:49,  1.33it/s]
  6%|▋         | 79/1261 [00:59<14:55,  1.32it/s]
  6%|▋         | 80/1261 [01:00<14:53,  1.32it/s]
  6%|▋         | 81/1261 [01:01<14:47,  1.33it/s]
  7%|▋         | 82/1261 [01:01<14:44,  1.33it/s]
  7%|▋         | 83/1261 [01:02<14:43,  1.33it/s]
  7%|▋         | 84/1261 [01:03<14:42,  1.33it/s]
  7%|▋         | 85/1261 [01:04<14:42,  1.33it/s]
  7%|▋         | 86/1261 [01:04<14:43,  1.33it/s]
  7%|▋         | 87/1261 [01:05<14:48,  1.32it/s]
  7%|▋         | 88/1261 [01:06<14:48,  1.32it/s]
  7%|▋         | 89/1261 [01:07<14:50,  1.32it/s]
  7%|▋         | 90/1261 [01:07<14:47,  1.32it/s]
  7%|▋         | 91/1261 [01:08<14:49,  1.32it/s]
  7%|▋         | 92/1261 [01:09<14:42,  1.32it/s]
  7%|▋         | 93/1261 [01:10<14:39,  1.33it/s]
  7%|▋         | 94/1261 [01:10<14:37,  1.33it/s]
  8%|▊         | 95/1261 [01:11<14:32,  1.34it/s]
  8%|▊         | 96/1261 [01:12<14:33,  1.33it/s]
  8%|▊         | 97/1261 [01:13<14:32,  1.33it/s]
  8%|▊         | 98/1261 [01:13<14:33,  1.33it/s]
  8%|▊         | 99/1261 [01:14<14:31,  1.33it/s]
  8%|▊         | 100/1261 [01:15<14:29,  1.33it/s]
  8%|▊         | 101/1261 [01:16<14:28,  1.33it/s]
  8%|▊         | 102/1261 [01:16<14:36,  1.32it/s]
  8%|▊         | 103/1261 [01:17<14:41,  1.31it/s]
  8%|▊         | 104/1261 [01:18<14:37,  1.32it/s]
  8%|▊         | 105/1261 [01:19<14:35,  1.32it/s]
  8%|▊         | 106/1261 [01:19<14:34,  1.32it/s]
  8%|▊         | 107/1261 [01:20<14:28,  1.33it/s]
  9%|▊         | 108/1261 [01:21<14:25,  1.33it/s]
  9%|▊         | 109/1261 [01:22<14:35,  1.32it/s]
  9%|▊         | 110/1261 [01:22<14:30,  1.32it/s]
  9%|▉         | 111/1261 [01:23<14:32,  1.32it/s]
  9%|▉         | 112/1261 [01:24<14:28,  1.32it/s]
  9%|▉         | 113/1261 [01:25<14:32,  1.32it/s]
  9%|▉         | 114/1261 [01:25<14:29,  1.32it/s]
  9%|▉         | 115/1261 [01:26<14:26,  1.32it/s]
  9%|▉         | 116/1261 [01:27<14:24,  1.32it/s]
  9%|▉         | 117/1261 [01:28<14:23,  1.33it/s]
  9%|▉         | 118/1261 [01:28<14:20,  1.33it/s]
  9%|▉         | 119/1261 [01:29<14:24,  1.32it/s]
 10%|▉         | 120/1261 [01:30<14:24,  1.32it/s]
 10%|▉         | 121/1261 [01:31<14:27,  1.31it/s]
 10%|▉         | 122/1261 [01:31<14:22,  1.32it/s]
 10%|▉         | 123/1261 [01:32<14:19,  1.32it/s]
 10%|▉         | 124/1261 [01:33<14:22,  1.32it/s]
 10%|▉         | 125/1261 [01:34<14:15,  1.33it/s]
 10%|▉         | 126/1261 [01:34<14:18,  1.32it/s]
 10%|█         | 127/1261 [01:35<14:19,  1.32it/s]
 10%|█         | 128/1261 [01:36<14:21,  1.32it/s]
 10%|█         | 129/1261 [01:37<14:18,  1.32it/s]
 10%|█         | 130/1261 [01:38<14:13,  1.32it/s]
 10%|█         | 131/1261 [01:38<14:12,  1.33it/s]
 10%|█         | 132/1261 [01:39<14:12,  1.32it/s]
 11%|█         | 133/1261 [01:40<14:11,  1.32it/s]
 11%|█         | 134/1261 [01:41<14:14,  1.32it/s]
 11%|█         | 135/1261 [01:41<14:12,  1.32it/s]
 11%|█         | 136/1261 [01:42<14:14,  1.32it/s]
 11%|█         | 137/1261 [01:43<14:09,  1.32it/s]
 11%|█         | 138/1261 [01:44<14:11,  1.32it/s]
 11%|█         | 139/1261 [01:44<14:07,  1.32it/s]
 11%|█         | 140/1261 [01:45<14:10,  1.32it/s]
 11%|█         | 141/1261 [01:46<14:10,  1.32it/s]
 11%|█▏        | 142/1261 [01:47<14:17,  1.30it/s]
 11%|█▏        | 143/1261 [01:47<14:12,  1.31it/s]
 11%|█▏        | 144/1261 [01:48<14:10,  1.31it/s]
 11%|█▏        | 145/1261 [01:49<14:09,  1.31it/s]
 12%|█▏        | 146/1261 [01:50<14:11,  1.31it/s]
 12%|█▏        | 147/1261 [01:50<14:07,  1.31it/s]
 12%|█▏        | 148/1261 [01:51<14:11,  1.31it/s]
 12%|█▏        | 149/1261 [01:52<14:33,  1.27it/s]
 12%|█▏        | 150/1261 [01:53<14:27,  1.28it/s]
 12%|█▏        | 151/1261 [01:54<15:03,  1.23it/s]
 12%|█▏        | 152/1261 [01:55<18:42,  1.01s/it]
 12%|█▏        | 153/1261 [01:57<22:59,  1.24s/it]
 12%|█▏        | 154/1261 [01:58<20:20,  1.10s/it]
 12%|█▏        | 155/1261 [01:59<18:39,  1.01s/it]
 12%|█▏        | 156/1261 [01:59<17:39,  1.04it/s]
 12%|█▏        | 157/1261 [02:00<16:36,  1.11it/s]
 13%|█▎        | 158/1261 [02:01<15:42,  1.17it/s]
 13%|█▎        | 159/1261 [02:02<15:11,  1.21it/s]
 13%|█▎        | 160/1261 [02:02<14:56,  1.23it/s]
 13%|█▎        | 161/1261 [02:03<14:35,  1.26it/s]
 13%|█▎        | 162/1261 [02:04<14:22,  1.27it/s]
 13%|█▎        | 163/1261 [02:05<14:09,  1.29it/s]
 13%|█▎        | 164/1261 [02:05<14:08,  1.29it/s]
 13%|█▎        | 165/1261 [02:06<14:00,  1.30it/s]
 13%|█▎        | 166/1261 [02:07<13:53,  1.31it/s]
 13%|█▎        | 167/1261 [02:08<13:53,  1.31it/s]
 13%|█▎        | 168/1261 [02:09<13:53,  1.31it/s]
 13%|█▎        | 169/1261 [02:09<13:52,  1.31it/s]
 13%|█▎        | 170/1261 [02:10<15:00,  1.21it/s]
 14%|█▎        | 171/1261 [02:11<14:42,  1.23it/s]
 14%|█▎        | 172/1261 [02:12<14:40,  1.24it/s]
 14%|█▎        | 173/1261 [02:13<14:47,  1.23it/s]
 14%|█▍        | 174/1261 [02:13<14:29,  1.25it/s]
 14%|█▍        | 175/1261 [02:14<14:16,  1.27it/s]
 14%|█▍        | 176/1261 [02:15<14:15,  1.27it/s]
 14%|█▍        | 177/1261 [02:16<14:08,  1.28it/s]
 14%|█▍        | 178/1261 [02:17<14:10,  1.27it/s]
 14%|█▍        | 179/1261 [02:17<14:02,  1.28it/s]
 14%|█▍        | 180/1261 [02:18<13:58,  1.29it/s]
 14%|█▍        | 181/1261 [02:19<13:53,  1.30it/s]
 14%|█▍        | 182/1261 [02:20<13:53,  1.29it/s]
 15%|█▍        | 183/1261 [02:20<13:48,  1.30it/s]
 15%|█▍        | 184/1261 [02:21<13:48,  1.30it/s]
 15%|█▍        | 185/1261 [02:22<13:41,  1.31it/s]
 15%|█▍        | 186/1261 [02:23<13:38,  1.31it/s]
 15%|█▍        | 187/1261 [02:23<13:36,  1.31it/s]
 15%|█▍        | 188/1261 [02:24<13:37,  1.31it/s]
 15%|█▍        | 189/1261 [02:25<13:42,  1.30it/s]
 15%|█▌        | 190/1261 [02:26<13:39,  1.31it/s]
 15%|█▌        | 191/1261 [02:26<13:37,  1.31it/s]
 15%|█▌        | 192/1261 [02:27<13:36,  1.31it/s]
 15%|█▌        | 193/1261 [02:28<13:33,  1.31it/s]
 15%|█▌        | 194/1261 [02:29<13:34,  1.31it/s]
 15%|█▌        | 195/1261 [02:29<13:32,  1.31it/s]
 16%|█▌        | 196/1261 [02:30<13:39,  1.30it/s]
 16%|█▌        | 197/1261 [02:31<13:34,  1.31it/s]
 16%|█▌        | 198/1261 [02:32<13:33,  1.31it/s]
 16%|█▌        | 199/1261 [02:33<13:30,  1.31it/s]
 16%|█▌        | 200/1261 [02:33<13:29,  1.31it/s]
 16%|█▌        | 201/1261 [02:34<13:31,  1.31it/s]
 16%|█▌        | 202/1261 [02:35<13:25,  1.32it/s]
 16%|█▌        | 203/1261 [02:36<13:23,  1.32it/s]
 16%|█▌        | 204/1261 [02:36<13:28,  1.31it/s]
 16%|█▋        | 205/1261 [02:37<13:28,  1.31it/s]
 16%|█▋        | 206/1261 [02:38<13:51,  1.27it/s]
 16%|█▋        | 207/1261 [02:39<14:11,  1.24it/s]
 16%|█▋        | 208/1261 [02:40<14:34,  1.20it/s]
 17%|█▋        | 209/1261 [02:41<14:29,  1.21it/s]
 17%|█▋        | 210/1261 [02:41<14:11,  1.23it/s]
 17%|█▋        | 211/1261 [02:42<13:55,  1.26it/s]
 17%|█▋        | 212/1261 [02:43<13:48,  1.27it/s]
 17%|█▋        | 213/1261 [02:44<13:39,  1.28it/s]
 17%|█▋        | 214/1261 [02:44<13:33,  1.29it/s]
 17%|█▋        | 215/1261 [02:45<13:29,  1.29it/s]
 17%|█▋        | 216/1261 [02:46<13:30,  1.29it/s]
 17%|█▋        | 217/1261 [02:47<13:37,  1.28it/s]
 17%|█▋        | 218/1261 [02:47<13:30,  1.29it/s]
 17%|█▋        | 219/1261 [02:48<13:30,  1.29it/s]
 17%|█▋        | 220/1261 [02:49<13:34,  1.28it/s]
 18%|█▊        | 221/1261 [02:50<13:31,  1.28it/s]
 18%|█▊        | 222/1261 [02:51<13:28,  1.29it/s]
 18%|█▊        | 223/1261 [02:51<13:22,  1.29it/s]
 18%|█▊        | 224/1261 [02:52<13:23,  1.29it/s]
 18%|█▊        | 225/1261 [02:53<13:19,  1.30it/s]
 18%|█▊        | 226/1261 [02:54<13:14,  1.30it/s]
 18%|█▊        | 227/1261 [02:54<13:10,  1.31it/s]
 18%|█▊        | 228/1261 [02:55<13:14,  1.30it/s]
 18%|█▊        | 229/1261 [02:56<13:14,  1.30it/s]
 18%|█▊        | 230/1261 [02:57<13:11,  1.30it/s]
 18%|█▊        | 231/1261 [02:58<13:09,  1.30it/s]
 18%|█▊        | 232/1261 [02:58<13:09,  1.30it/s]
 18%|█▊        | 233/1261 [02:59<13:02,  1.31it/s]
 19%|█▊        | 234/1261 [03:00<13:00,  1.32it/s]
 19%|█▊        | 235/1261 [03:01<12:57,  1.32it/s]
 19%|█▊        | 236/1261 [03:01<12:58,  1.32it/s]
 19%|█▉        | 237/1261 [03:02<12:54,  1.32it/s]
 19%|█▉        | 238/1261 [03:03<12:54,  1.32it/s]
 19%|█▉        | 239/1261 [03:04<12:52,  1.32it/s]
 19%|█▉        | 240/1261 [03:04<12:56,  1.32it/s]
 19%|█▉        | 241/1261 [03:05<13:01,  1.31it/s]
 19%|█▉        | 242/1261 [03:06<12:57,  1.31it/s]
 19%|█▉        | 243/1261 [03:07<12:59,  1.31it/s]
 19%|█▉        | 244/1261 [03:07<12:59,  1.30it/s]
 19%|█▉        | 245/1261 [03:08<12:53,  1.31it/s]
 20%|█▉        | 246/1261 [03:09<12:51,  1.31it/s]
 20%|█▉        | 247/1261 [03:10<12:52,  1.31it/s]
 20%|█▉        | 248/1261 [03:10<12:53,  1.31it/s]
 20%|█▉        | 249/1261 [03:11<12:50,  1.31it/s]
 20%|█▉        | 250/1261 [03:12<12:50,  1.31it/s]
 20%|█▉        | 251/1261 [03:13<12:52,  1.31it/s]
 20%|█▉        | 252/1261 [03:14<12:52,  1.31it/s]
 20%|██        | 253/1261 [03:14<12:52,  1.30it/s]
 20%|██        | 254/1261 [03:15<12:51,  1.31it/s]
 20%|██        | 255/1261 [03:16<12:52,  1.30it/s]
 20%|██        | 256/1261 [03:17<12:56,  1.30it/s]
 20%|██        | 257/1261 [03:17<12:53,  1.30it/s]
 20%|██        | 258/1261 [03:18<12:52,  1.30it/s]
 21%|██        | 259/1261 [03:19<12:52,  1.30it/s]
 21%|██        | 260/1261 [03:20<12:54,  1.29it/s]
 21%|██        | 261/1261 [03:20<12:50,  1.30it/s]
 21%|██        | 262/1261 [03:21<12:45,  1.31it/s]
 21%|██        | 263/1261 [03:22<12:45,  1.30it/s]
 21%|██        | 264/1261 [03:23<12:45,  1.30it/s]
 21%|██        | 265/1261 [03:24<12:44,  1.30it/s]
 21%|██        | 266/1261 [03:24<12:46,  1.30it/s]
 21%|██        | 267/1261 [03:25<12:44,  1.30it/s]
 21%|██▏       | 268/1261 [03:26<12:49,  1.29it/s]
 21%|██▏       | 269/1261 [03:27<12:51,  1.29it/s]
 21%|██▏       | 270/1261 [03:27<12:46,  1.29it/s]
 21%|██▏       | 271/1261 [03:28<12:43,  1.30it/s]
 22%|██▏       | 272/1261 [03:29<12:42,  1.30it/s]
 22%|██▏       | 273/1261 [03:30<12:40,  1.30it/s]
 22%|██▏       | 274/1261 [03:30<12:39,  1.30it/s]
 22%|██▏       | 275/1261 [03:31<12:36,  1.30it/s]
 22%|██▏       | 276/1261 [03:32<12:38,  1.30it/s]
 22%|██▏       | 277/1261 [03:33<12:38,  1.30it/s]
 22%|██▏       | 278/1261 [03:34<12:35,  1.30it/s]
 22%|██▏       | 279/1261 [03:34<12:30,  1.31it/s]
 22%|██▏       | 280/1261 [03:35<12:33,  1.30it/s]
 22%|██▏       | 281/1261 [03:36<12:32,  1.30it/s]
 22%|██▏       | 282/1261 [03:37<12:31,  1.30it/s]
 22%|██▏       | 283/1261 [03:37<12:28,  1.31it/s]
 23%|██▎       | 284/1261 [03:38<12:29,  1.30it/s]
 23%|██▎       | 285/1261 [03:39<12:33,  1.30it/s]
 23%|██▎       | 286/1261 [03:40<13:18,  1.22it/s]
 23%|██▎       | 287/1261 [03:41<13:06,  1.24it/s]
 23%|██▎       | 288/1261 [03:41<12:59,  1.25it/s]
 23%|██▎       | 289/1261 [03:42<12:48,  1.26it/s]
 23%|██▎       | 290/1261 [03:43<12:38,  1.28it/s]
 23%|██▎       | 291/1261 [03:44<12:36,  1.28it/s]
 23%|██▎       | 292/1261 [03:44<12:35,  1.28it/s]
 23%|██▎       | 293/1261 [03:45<12:44,  1.27it/s]
 23%|██▎       | 294/1261 [03:46<12:38,  1.27it/s]
 23%|██▎       | 295/1261 [03:47<12:39,  1.27it/s]
 23%|██▎       | 296/1261 [03:48<12:51,  1.25it/s]
 24%|██▎       | 297/1261 [03:48<12:45,  1.26it/s]
 24%|██▎       | 298/1261 [03:49<12:43,  1.26it/s]
 24%|██▎       | 299/1261 [03:50<12:38,  1.27it/s]
 24%|██▍       | 300/1261 [03:51<12:31,  1.28it/s]
 24%|██▍       | 301/1261 [03:52<12:32,  1.28it/s]
 24%|██▍       | 302/1261 [03:52<12:30,  1.28it/s]
 24%|██▍       | 303/1261 [03:53<12:25,  1.28it/s]
 24%|██▍       | 304/1261 [03:54<12:20,  1.29it/s]
 24%|██▍       | 305/1261 [03:55<12:16,  1.30it/s]
 24%|██▍       | 306/1261 [03:55<12:17,  1.30it/s]
 24%|██▍       | 307/1261 [03:56<12:12,  1.30it/s]
 24%|██▍       | 308/1261 [03:57<12:10,  1.30it/s]
 25%|██▍       | 309/1261 [03:58<12:05,  1.31it/s]
 25%|██▍       | 310/1261 [03:58<12:02,  1.32it/s]
 25%|██▍       | 311/1261 [03:59<11:58,  1.32it/s]
 25%|██▍       | 312/1261 [04:00<11:57,  1.32it/s]
 25%|██▍       | 313/1261 [04:01<11:55,  1.32it/s]
 25%|██▍       | 314/1261 [04:02<11:59,  1.32it/s]
 25%|██▍       | 315/1261 [04:02<11:59,  1.32it/s]
 25%|██▌       | 316/1261 [04:03<11:56,  1.32it/s]
 25%|██▌       | 317/1261 [04:04<11:56,  1.32it/s]
 25%|██▌       | 318/1261 [04:05<11:57,  1.32it/s]
 25%|██▌       | 319/1261 [04:05<11:55,  1.32it/s]
 25%|██▌       | 320/1261 [04:06<11:55,  1.32it/s]
 25%|██▌       | 321/1261 [04:07<11:53,  1.32it/s]
 26%|██▌       | 322/1261 [04:08<11:54,  1.31it/s]
 26%|██▌       | 323/1261 [04:08<11:56,  1.31it/s]
 26%|██▌       | 324/1261 [04:09<11:54,  1.31it/s]
 26%|██▌       | 325/1261 [04:10<11:56,  1.31it/s]
 26%|██▌       | 326/1261 [04:11<11:58,  1.30it/s]
 26%|██▌       | 327/1261 [04:11<11:54,  1.31it/s]
 26%|██▌       | 328/1261 [04:12<11:51,  1.31it/s]
 26%|██▌       | 329/1261 [04:13<11:48,  1.32it/s]
 26%|██▌       | 330/1261 [04:14<11:48,  1.31it/s]
 26%|██▌       | 331/1261 [04:14<11:45,  1.32it/s]
 26%|██▋       | 332/1261 [04:15<11:44,  1.32it/s]
 26%|██▋       | 333/1261 [04:16<11:39,  1.33it/s]
 26%|██▋       | 334/1261 [04:17<11:50,  1.31it/s]
 27%|██▋       | 335/1261 [04:18<11:53,  1.30it/s]
 27%|██▋       | 336/1261 [04:18<11:49,  1.30it/s]
 27%|██▋       | 337/1261 [04:19<11:47,  1.31it/s]
 27%|██▋       | 338/1261 [04:20<11:44,  1.31it/s]
 27%|██▋       | 339/1261 [04:21<11:42,  1.31it/s]
 27%|██▋       | 340/1261 [04:21<11:38,  1.32it/s]
 27%|██▋       | 341/1261 [04:22<11:35,  1.32it/s]
 27%|██▋       | 342/1261 [04:23<11:36,  1.32it/s]
 27%|██▋       | 343/1261 [04:24<11:34,  1.32it/s]
 27%|██▋       | 344/1261 [04:24<11:31,  1.33it/s]
 27%|██▋       | 345/1261 [04:25<11:27,  1.33it/s]
 27%|██▋       | 346/1261 [04:26<11:33,  1.32it/s]
 28%|██▊       | 347/1261 [04:27<11:29,  1.33it/s]
 28%|██▊       | 348/1261 [04:27<11:27,  1.33it/s]
 28%|██▊       | 349/1261 [04:28<11:27,  1.33it/s]
 28%|██▊       | 350/1261 [04:29<11:32,  1.32it/s]
 28%|██▊       | 351/1261 [04:30<11:40,  1.30it/s]
 28%|██▊       | 352/1261 [04:30<11:39,  1.30it/s]
 28%|██▊       | 353/1261 [04:31<11:33,  1.31it/s]
 28%|██▊       | 354/1261 [04:32<11:31,  1.31it/s]
 28%|██▊       | 355/1261 [04:33<11:29,  1.31it/s]
 28%|██▊       | 356/1261 [04:33<11:23,  1.32it/s]
 28%|██▊       | 357/1261 [04:34<11:24,  1.32it/s]
 28%|██▊       | 358/1261 [04:35<11:24,  1.32it/s]
 28%|██▊       | 359/1261 [04:36<11:22,  1.32it/s]
 29%|██▊       | 360/1261 [04:36<11:19,  1.33it/s]
 29%|██▊       | 361/1261 [04:37<11:19,  1.32it/s]
 29%|██▊       | 362/1261 [04:38<11:20,  1.32it/s]
 29%|██▉       | 363/1261 [04:39<11:17,  1.33it/s]
 29%|██▉       | 364/1261 [04:39<11:12,  1.33it/s]
 29%|██▉       | 365/1261 [04:40<11:11,  1.33it/s]
 29%|██▉       | 366/1261 [04:41<11:13,  1.33it/s]
 29%|██▉       | 367/1261 [04:42<11:14,  1.33it/s]
 29%|██▉       | 368/1261 [04:42<11:11,  1.33it/s]
 29%|██▉       | 369/1261 [04:43<11:08,  1.33it/s]
 29%|██▉       | 370/1261 [04:44<11:14,  1.32it/s]
 29%|██▉       | 371/1261 [04:45<11:13,  1.32it/s]
 30%|██▉       | 372/1261 [04:46<11:21,  1.30it/s]
 30%|██▉       | 373/1261 [04:46<11:19,  1.31it/s]
 30%|██▉       | 374/1261 [04:47<11:18,  1.31it/s]
 30%|██▉       | 375/1261 [04:48<11:11,  1.32it/s]
 30%|██▉       | 376/1261 [04:49<11:07,  1.33it/s]
 30%|██▉       | 377/1261 [04:49<11:08,  1.32it/s]
 30%|██▉       | 378/1261 [04:50<11:16,  1.31it/s]
 30%|███       | 379/1261 [04:51<11:12,  1.31it/s]
 30%|███       | 380/1261 [04:52<11:10,  1.31it/s]
 30%|███       | 381/1261 [04:52<11:06,  1.32it/s]
 30%|███       | 382/1261 [04:53<11:06,  1.32it/s]
 30%|███       | 383/1261 [04:54<11:05,  1.32it/s]
 30%|███       | 384/1261 [04:55<11:06,  1.32it/s]
 31%|███       | 385/1261 [04:55<11:04,  1.32it/s]
 31%|███       | 386/1261 [04:56<11:06,  1.31it/s]
 31%|███       | 387/1261 [04:57<11:03,  1.32it/s]
 31%|███       | 388/1261 [04:58<11:00,  1.32it/s]
 31%|███       | 389/1261 [04:58<10:55,  1.33it/s]
 31%|███       | 390/1261 [04:59<10:56,  1.33it/s]
 31%|███       | 391/1261 [05:00<10:55,  1.33it/s]
 31%|███       | 392/1261 [05:01<10:52,  1.33it/s]
 31%|███       | 393/1261 [05:01<10:49,  1.34it/s]
 31%|███       | 394/1261 [05:02<10:54,  1.33it/s]
 31%|███▏      | 395/1261 [05:03<10:52,  1.33it/s]
 31%|███▏      | 396/1261 [05:04<10:48,  1.33it/s]
 31%|███▏      | 397/1261 [05:04<10:49,  1.33it/s]
 32%|███▏      | 398/1261 [05:05<10:52,  1.32it/s]
 32%|███▏      | 399/1261 [05:06<10:55,  1.31it/s]
 32%|███▏      | 400/1261 [05:07<10:52,  1.32it/s]
 32%|███▏      | 401/1261 [05:07<10:53,  1.32it/s]
 32%|███▏      | 402/1261 [05:08<10:52,  1.32it/s]
 32%|███▏      | 403/1261 [05:09<10:48,  1.32it/s]
 32%|███▏      | 404/1261 [05:10<10:50,  1.32it/s]
 32%|███▏      | 405/1261 [05:11<10:47,  1.32it/s]
 32%|███▏      | 406/1261 [05:11<10:46,  1.32it/s]
 32%|███▏      | 407/1261 [05:12<10:42,  1.33it/s]
 32%|███▏      | 408/1261 [05:13<10:42,  1.33it/s]
 32%|███▏      | 409/1261 [05:14<10:40,  1.33it/s]
 33%|███▎      | 410/1261 [05:14<10:42,  1.32it/s]
 33%|███▎      | 411/1261 [05:15<10:41,  1.33it/s]
 33%|███▎      | 412/1261 [05:16<10:40,  1.33it/s]
 33%|███▎      | 413/1261 [05:17<10:42,  1.32it/s]
 33%|███▎      | 414/1261 [05:17<10:41,  1.32it/s]
 33%|███▎      | 415/1261 [05:18<10:39,  1.32it/s]
 33%|███▎      | 416/1261 [05:19<10:37,  1.33it/s]
 33%|███▎      | 417/1261 [05:20<10:38,  1.32it/s]
 33%|███▎      | 418/1261 [05:20<10:39,  1.32it/s]
 33%|███▎      | 419/1261 [05:21<10:39,  1.32it/s]
 33%|███▎      | 420/1261 [05:22<10:38,  1.32it/s]
 33%|███▎      | 421/1261 [05:23<10:35,  1.32it/s]
 33%|███▎      | 422/1261 [05:23<10:37,  1.32it/s]
 34%|███▎      | 423/1261 [05:24<10:33,  1.32it/s]
 34%|███▎      | 424/1261 [05:25<10:33,  1.32it/s]
 34%|███▎      | 425/1261 [05:26<10:32,  1.32it/s]
 34%|███▍      | 426/1261 [05:26<10:34,  1.32it/s]
 34%|███▍      | 427/1261 [05:27<10:30,  1.32it/s]
 34%|███▍      | 428/1261 [05:28<10:26,  1.33it/s]
 34%|███▍      | 429/1261 [05:29<10:25,  1.33it/s]
 34%|███▍      | 430/1261 [05:29<10:29,  1.32it/s]
 34%|███▍      | 431/1261 [05:30<10:56,  1.26it/s]
 34%|███▍      | 432/1261 [05:31<10:57,  1.26it/s]
 34%|███▍      | 433/1261 [05:32<10:48,  1.28it/s]
 34%|███▍      | 434/1261 [05:33<10:44,  1.28it/s]
 34%|███▍      | 435/1261 [05:33<10:36,  1.30it/s]
 35%|███▍      | 436/1261 [05:34<10:33,  1.30it/s]
 35%|███▍      | 437/1261 [05:35<10:29,  1.31it/s]
 35%|███▍      | 438/1261 [05:36<10:31,  1.30it/s]
 35%|███▍      | 439/1261 [05:36<10:26,  1.31it/s]
 35%|███▍      | 440/1261 [05:37<10:26,  1.31it/s]
 35%|███▍      | 441/1261 [05:38<10:24,  1.31it/s]
 35%|███▌      | 442/1261 [05:39<10:21,  1.32it/s]
 35%|███▌      | 443/1261 [05:39<10:23,  1.31it/s]
 35%|███▌      | 444/1261 [05:40<10:26,  1.30it/s]
 35%|███▌      | 445/1261 [05:41<10:24,  1.31it/s]
 35%|███▌      | 446/1261 [05:42<10:25,  1.30it/s]
 35%|███▌      | 447/1261 [05:43<10:22,  1.31it/s]
 36%|███▌      | 448/1261 [05:43<10:19,  1.31it/s]
 36%|███▌      | 449/1261 [05:44<10:15,  1.32it/s]
 36%|███▌      | 450/1261 [05:45<10:15,  1.32it/s]
 36%|███▌      | 451/1261 [05:46<10:12,  1.32it/s]
 36%|███▌      | 452/1261 [05:46<10:14,  1.32it/s]
 36%|███▌      | 453/1261 [05:47<10:17,  1.31it/s]
 36%|███▌      | 454/1261 [05:48<10:19,  1.30it/s]
 36%|███▌      | 455/1261 [05:49<10:14,  1.31it/s]
 36%|███▌      | 456/1261 [05:49<10:11,  1.32it/s]
 36%|███▌      | 457/1261 [05:50<10:10,  1.32it/s]
 36%|███▋      | 458/1261 [05:51<10:09,  1.32it/s]
 36%|███▋      | 459/1261 [05:52<10:08,  1.32it/s]
 36%|███▋      | 460/1261 [05:52<10:09,  1.31it/s]
 37%|███▋      | 461/1261 [05:53<10:05,  1.32it/s]
 37%|███▋      | 462/1261 [05:54<10:06,  1.32it/s]
 37%|███▋      | 463/1261 [05:55<10:07,  1.31it/s]
 37%|███▋      | 464/1261 [05:55<10:05,  1.32it/s]
 37%|███▋      | 465/1261 [05:56<10:04,  1.32it/s]
 37%|███▋      | 466/1261 [05:57<10:06,  1.31it/s]
 37%|███▋      | 467/1261 [05:58<10:08,  1.30it/s]
 37%|███▋      | 468/1261 [05:58<10:04,  1.31it/s]
 37%|███▋      | 469/1261 [05:59<10:02,  1.31it/s]
 37%|███▋      | 470/1261 [06:00<10:02,  1.31it/s]
 37%|███▋      | 471/1261 [06:01<10:01,  1.31it/s]
 37%|███▋      | 472/1261 [06:02<10:00,  1.31it/s]
 38%|███▊      | 473/1261 [06:02<10:00,  1.31it/s]
 38%|███▊      | 474/1261 [06:03<10:01,  1.31it/s]
 38%|███▊      | 475/1261 [06:04<10:03,  1.30it/s]
 38%|███▊      | 476/1261 [06:05<10:01,  1.30it/s]
 38%|███▊      | 477/1261 [06:05<10:00,  1.31it/s]
 38%|███▊      | 478/1261 [06:06<10:10,  1.28it/s]
 38%|███▊      | 479/1261 [06:07<10:04,  1.29it/s]
 38%|███▊      | 480/1261 [06:08<10:01,  1.30it/s]
 38%|███▊      | 481/1261 [06:08<10:00,  1.30it/s]
 38%|███▊      | 482/1261 [06:09<09:58,  1.30it/s]
 38%|███▊      | 483/1261 [06:10<10:04,  1.29it/s]
 38%|███▊      | 484/1261 [06:11<09:59,  1.30it/s]
 38%|███▊      | 485/1261 [06:12<10:06,  1.28it/s]
 39%|███▊      | 486/1261 [06:12<09:58,  1.29it/s]
 39%|███▊      | 487/1261 [06:13<09:52,  1.31it/s]
 39%|███▊      | 488/1261 [06:14<09:53,  1.30it/s]
 39%|███▉      | 489/1261 [06:15<09:49,  1.31it/s]
 39%|███▉      | 490/1261 [06:15<09:49,  1.31it/s]
 39%|███▉      | 491/1261 [06:16<09:52,  1.30it/s]
 39%|███▉      | 492/1261 [06:17<09:51,  1.30it/s]
 39%|███▉      | 493/1261 [06:18<09:46,  1.31it/s]
 39%|███▉      | 494/1261 [06:18<09:44,  1.31it/s]
 39%|███▉      | 495/1261 [06:19<09:41,  1.32it/s]
 39%|███▉      | 496/1261 [06:20<09:43,  1.31it/s]
 39%|███▉      | 497/1261 [06:21<10:05,  1.26it/s]
 39%|███▉      | 498/1261 [06:22<10:10,  1.25it/s]
 40%|███▉      | 499/1261 [06:23<10:23,  1.22it/s]
 40%|███▉      | 500/1261 [06:23<10:09,  1.25it/s]
 40%|███▉      | 501/1261 [06:24<09:58,  1.27it/s]
 40%|███▉      | 502/1261 [06:25<09:48,  1.29it/s]
 40%|███▉      | 503/1261 [06:26<09:45,  1.30it/s]
 40%|███▉      | 504/1261 [06:26<09:43,  1.30it/s]
 40%|████      | 505/1261 [06:27<09:41,  1.30it/s]
 40%|████      | 506/1261 [06:28<09:35,  1.31it/s]
 40%|████      | 507/1261 [06:29<09:33,  1.32it/s]
 40%|████      | 508/1261 [06:29<09:34,  1.31it/s]
 40%|████      | 509/1261 [06:30<09:34,  1.31it/s]
 40%|████      | 510/1261 [06:31<09:32,  1.31it/s]
 41%|████      | 511/1261 [06:32<09:32,  1.31it/s]
 41%|████      | 512/1261 [06:32<09:32,  1.31it/s]
 41%|████      | 513/1261 [06:33<09:29,  1.31it/s]
 41%|████      | 514/1261 [06:34<09:27,  1.32it/s]
 41%|████      | 515/1261 [06:35<09:25,  1.32it/s]
 41%|████      | 516/1261 [06:35<09:23,  1.32it/s]
 41%|████      | 517/1261 [06:36<09:21,  1.32it/s]
 41%|████      | 518/1261 [06:37<09:18,  1.33it/s]
 41%|████      | 519/1261 [06:38<09:17,  1.33it/s]
 41%|████      | 520/1261 [06:38<09:17,  1.33it/s]
 41%|████▏     | 521/1261 [06:39<09:18,  1.33it/s]
 41%|████▏     | 522/1261 [06:40<09:17,  1.33it/s]
 41%|████▏     | 523/1261 [06:41<09:17,  1.32it/s]
 42%|████▏     | 524/1261 [06:41<09:20,  1.31it/s]
 42%|████▏     | 525/1261 [06:42<09:17,  1.32it/s]
 42%|████▏     | 526/1261 [06:43<09:16,  1.32it/s]
 42%|████▏     | 527/1261 [06:44<09:14,  1.32it/s]
 42%|████▏     | 528/1261 [06:44<09:14,  1.32it/s]
 42%|████▏     | 529/1261 [06:45<09:15,  1.32it/s]
 42%|████▏     | 530/1261 [06:46<09:17,  1.31it/s]
 42%|████▏     | 531/1261 [06:47<09:19,  1.31it/s]
 42%|████▏     | 532/1261 [06:48<09:20,  1.30it/s]
 42%|████▏     | 533/1261 [06:48<09:17,  1.31it/s]
 42%|████▏     | 534/1261 [06:49<09:17,  1.30it/s]
 42%|████▏     | 535/1261 [06:50<09:19,  1.30it/s]
 43%|████▎     | 536/1261 [06:51<09:15,  1.30it/s]
 43%|████▎     | 537/1261 [06:51<09:17,  1.30it/s]
 43%|████▎     | 538/1261 [06:52<09:25,  1.28it/s]
 43%|████▎     | 539/1261 [06:53<09:30,  1.27it/s]
 43%|████▎     | 540/1261 [06:54<09:30,  1.26it/s]
 43%|████▎     | 541/1261 [06:55<09:21,  1.28it/s]
 43%|████▎     | 542/1261 [06:55<09:14,  1.30it/s]
 43%|████▎     | 543/1261 [06:56<09:11,  1.30it/s]
 43%|████▎     | 544/1261 [06:57<09:07,  1.31it/s]
 43%|████▎     | 545/1261 [06:58<09:04,  1.31it/s]
 43%|████▎     | 546/1261 [06:58<09:05,  1.31it/s]
 43%|████▎     | 547/1261 [06:59<09:03,  1.31it/s]
 43%|████▎     | 548/1261 [07:00<09:01,  1.32it/s]
 44%|████▎     | 549/1261 [07:01<09:01,  1.32it/s]
 44%|████▎     | 550/1261 [07:01<09:01,  1.31it/s]
 44%|████▎     | 551/1261 [07:02<09:01,  1.31it/s]
 44%|████▍     | 552/1261 [07:03<08:59,  1.31it/s]
 44%|████▍     | 553/1261 [07:04<08:58,  1.31it/s]
 44%|████▍     | 554/1261 [07:04<08:58,  1.31it/s]
 44%|████▍     | 555/1261 [07:05<08:54,  1.32it/s]
 44%|████▍     | 556/1261 [07:06<08:57,  1.31it/s]
 44%|████▍     | 557/1261 [07:07<08:55,  1.32it/s]
 44%|████▍     | 558/1261 [07:07<08:52,  1.32it/s]
 44%|████▍     | 559/1261 [07:08<08:52,  1.32it/s]
 44%|████▍     | 560/1261 [07:09<08:54,  1.31it/s]
 44%|████▍     | 561/1261 [07:10<08:56,  1.31it/s]
 45%|████▍     | 562/1261 [07:11<08:56,  1.30it/s]
 45%|████▍     | 563/1261 [07:11<08:53,  1.31it/s]
 45%|████▍     | 564/1261 [07:12<08:55,  1.30it/s]
 45%|████▍     | 565/1261 [07:13<08:54,  1.30it/s]
 45%|████▍     | 566/1261 [07:14<08:51,  1.31it/s]
 45%|████▍     | 567/1261 [07:14<08:47,  1.32it/s]
 45%|████▌     | 568/1261 [07:15<08:50,  1.31it/s]
 45%|████▌     | 569/1261 [07:16<08:48,  1.31it/s]
 45%|████▌     | 570/1261 [07:17<08:52,  1.30it/s]
 45%|████▌     | 571/1261 [07:17<08:43,  1.32it/s]
 45%|████▌     | 572/1261 [07:18<08:39,  1.33it/s]
 45%|████▌     | 573/1261 [07:19<08:33,  1.34it/s]
 46%|████▌     | 574/1261 [07:20<08:32,  1.34it/s]
 46%|████▌     | 575/1261 [07:20<08:30,  1.35it/s]
 46%|████▌     | 576/1261 [07:21<08:29,  1.35it/s]
 46%|████▌     | 577/1261 [07:22<08:29,  1.34it/s]
 46%|████▌     | 578/1261 [07:23<08:28,  1.34it/s]
 46%|████▌     | 579/1261 [07:23<08:25,  1.35it/s]
 46%|████▌     | 580/1261 [07:24<08:33,  1.33it/s]
 46%|████▌     | 581/1261 [07:25<08:37,  1.31it/s]
 46%|████▌     | 582/1261 [07:26<08:39,  1.31it/s]
 46%|████▌     | 583/1261 [07:26<08:37,  1.31it/s]
 46%|████▋     | 584/1261 [07:27<08:39,  1.30it/s]
 46%|████▋     | 585/1261 [07:28<08:34,  1.31it/s]
 46%|████▋     | 586/1261 [07:29<08:32,  1.32it/s]
 47%|████▋     | 587/1261 [07:29<08:36,  1.30it/s]
 47%|████▋     | 588/1261 [07:30<08:37,  1.30it/s]
 47%|████▋     | 589/1261 [07:31<08:33,  1.31it/s]
 47%|████▋     | 590/1261 [07:32<08:33,  1.31it/s]
 47%|████▋     | 591/1261 [07:33<08:31,  1.31it/s]
 47%|████▋     | 592/1261 [07:33<08:30,  1.31it/s]
 47%|████▋     | 593/1261 [07:34<08:28,  1.31it/s]
 47%|████▋     | 594/1261 [07:35<08:25,  1.32it/s]
 47%|████▋     | 595/1261 [07:36<08:22,  1.33it/s]
 47%|████▋     | 596/1261 [07:36<08:21,  1.33it/s]
 47%|████▋     | 597/1261 [07:37<08:24,  1.32it/s]
 47%|████▋     | 598/1261 [07:38<08:26,  1.31it/s]
 48%|████▊     | 599/1261 [07:39<08:23,  1.31it/s]
 48%|████▊     | 600/1261 [07:39<08:25,  1.31it/s]
 48%|████▊     | 601/1261 [07:40<08:19,  1.32it/s]
 48%|████▊     | 602/1261 [07:41<08:15,  1.33it/s]
 48%|████▊     | 603/1261 [07:42<08:11,  1.34it/s]
 48%|████▊     | 604/1261 [07:42<08:11,  1.34it/s]
 48%|████▊     | 605/1261 [07:43<08:12,  1.33it/s]
 48%|████▊     | 606/1261 [07:44<08:12,  1.33it/s]
 48%|████▊     | 607/1261 [07:45<08:08,  1.34it/s]
 48%|████▊     | 608/1261 [07:45<08:07,  1.34it/s]
 48%|████▊     | 609/1261 [07:46<08:08,  1.33it/s]
 48%|████▊     | 610/1261 [07:47<08:06,  1.34it/s]
 48%|████▊     | 611/1261 [07:48<08:04,  1.34it/s]
 49%|████▊     | 612/1261 [07:48<08:06,  1.33it/s]
 49%|████▊     | 613/1261 [07:49<08:03,  1.34it/s]
 49%|████▊     | 614/1261 [07:50<08:04,  1.34it/s]
 49%|████▉     | 615/1261 [07:51<08:02,  1.34it/s]
 49%|████▉     | 616/1261 [07:51<08:04,  1.33it/s]
 49%|████▉     | 617/1261 [07:52<08:01,  1.34it/s]
 49%|████▉     | 618/1261 [07:53<07:59,  1.34it/s]
 49%|████▉     | 619/1261 [07:54<07:57,  1.34it/s]
 49%|████▉     | 620/1261 [07:54<07:57,  1.34it/s]
 49%|████▉     | 621/1261 [07:55<07:55,  1.35it/s]
 49%|████▉     | 622/1261 [07:56<07:55,  1.34it/s]
 49%|████▉     | 623/1261 [07:57<07:54,  1.34it/s]
 49%|████▉     | 624/1261 [07:57<07:56,  1.34it/s]
 50%|████▉     | 625/1261 [07:58<07:54,  1.34it/s]
 50%|████▉     | 626/1261 [07:59<07:53,  1.34it/s]
 50%|████▉     | 627/1261 [08:00<07:52,  1.34it/s]
 50%|████▉     | 628/1261 [08:00<07:53,  1.34it/s]
 50%|████▉     | 629/1261 [08:01<07:51,  1.34it/s]
 50%|████▉     | 630/1261 [08:02<07:49,  1.34it/s]
 50%|█████     | 631/1261 [08:02<07:44,  1.36it/s]
 50%|█████     | 632/1261 [08:03<07:44,  1.35it/s]
 50%|█████     | 633/1261 [08:04<07:41,  1.36it/s]
 50%|█████     | 634/1261 [08:05<07:41,  1.36it/s]
 50%|█████     | 635/1261 [08:05<07:43,  1.35it/s]
 50%|█████     | 636/1261 [08:06<07:42,  1.35it/s]
 51%|█████     | 637/1261 [08:07<07:42,  1.35it/s]
 51%|█████     | 638/1261 [08:08<07:45,  1.34it/s]
 51%|█████     | 639/1261 [08:08<07:45,  1.34it/s]
 51%|█████     | 640/1261 [08:09<07:46,  1.33it/s]
 51%|█████     | 641/1261 [08:10<07:44,  1.33it/s]
 51%|█████     | 642/1261 [08:11<07:43,  1.33it/s]
 51%|█████     | 643/1261 [08:11<07:40,  1.34it/s]
 51%|█████     | 644/1261 [08:12<07:37,  1.35it/s]
 51%|█████     | 645/1261 [08:13<07:37,  1.35it/s]
 51%|█████     | 646/1261 [08:14<07:38,  1.34it/s]
 51%|█████▏    | 647/1261 [08:14<07:37,  1.34it/s]
 51%|█████▏    | 648/1261 [08:15<07:35,  1.35it/s]
 51%|█████▏    | 649/1261 [08:16<07:36,  1.34it/s]
 52%|█████▏    | 650/1261 [08:17<07:42,  1.32it/s]
 52%|█████▏    | 651/1261 [08:17<07:39,  1.33it/s]
 52%|█████▏    | 652/1261 [08:18<07:36,  1.34it/s]
 52%|█████▏    | 653/1261 [08:19<07:35,  1.33it/s]
 52%|█████▏    | 654/1261 [08:20<07:35,  1.33it/s]
 52%|█████▏    | 655/1261 [08:20<07:34,  1.33it/s]
 52%|█████▏    | 656/1261 [08:21<07:33,  1.33it/s]
 52%|█████▏    | 657/1261 [08:22<07:40,  1.31it/s]
 52%|█████▏    | 658/1261 [08:23<07:37,  1.32it/s]
 52%|█████▏    | 659/1261 [08:23<07:34,  1.33it/s]
 52%|█████▏    | 660/1261 [08:24<07:33,  1.33it/s]
 52%|█████▏    | 661/1261 [08:25<07:29,  1.34it/s]
 52%|█████▏    | 662/1261 [08:26<07:25,  1.34it/s]
 53%|█████▎    | 663/1261 [08:26<07:24,  1.35it/s]
 53%|█████▎    | 664/1261 [08:27<07:23,  1.34it/s]
 53%|█████▎    | 665/1261 [08:28<07:21,  1.35it/s]
 53%|█████▎    | 666/1261 [08:29<07:22,  1.35it/s]
 53%|█████▎    | 667/1261 [08:29<07:20,  1.35it/s]
 53%|█████▎    | 668/1261 [08:30<07:18,  1.35it/s]
 53%|█████▎    | 669/1261 [08:31<07:18,  1.35it/s]
 53%|█████▎    | 670/1261 [08:32<07:21,  1.34it/s]
 53%|█████▎    | 671/1261 [08:32<07:20,  1.34it/s]
 53%|█████▎    | 672/1261 [08:33<07:17,  1.35it/s]
 53%|█████▎    | 673/1261 [08:34<07:14,  1.35it/s]
 53%|█████▎    | 674/1261 [08:35<07:15,  1.35it/s]
 54%|█████▎    | 675/1261 [08:35<07:15,  1.34it/s]
 54%|█████▎    | 676/1261 [08:36<07:13,  1.35it/s]
 54%|█████▎    | 677/1261 [08:37<07:12,  1.35it/s]
 54%|█████▍    | 678/1261 [08:38<07:12,  1.35it/s]
 54%|█████▍    | 679/1261 [08:38<07:11,  1.35it/s]
 54%|█████▍    | 680/1261 [08:39<07:12,  1.34it/s]
 54%|█████▍    | 681/1261 [08:40<07:12,  1.34it/s]
 54%|█████▍    | 682/1261 [08:41<07:14,  1.33it/s]
 54%|█████▍    | 683/1261 [08:41<07:12,  1.34it/s]
 54%|█████▍    | 684/1261 [08:42<07:10,  1.34it/s]
 54%|█████▍    | 685/1261 [08:43<07:08,  1.34it/s]
 54%|█████▍    | 686/1261 [08:44<07:09,  1.34it/s]
 54%|█████▍    | 687/1261 [08:44<07:07,  1.34it/s]
 55%|█████▍    | 688/1261 [08:45<07:08,  1.34it/s]
 55%|█████▍    | 689/1261 [08:46<07:07,  1.34it/s]
 55%|█████▍    | 690/1261 [08:47<07:14,  1.31it/s]
 55%|█████▍    | 691/1261 [08:47<07:10,  1.32it/s]
 55%|█████▍    | 692/1261 [08:48<07:10,  1.32it/s]
 55%|█████▍    | 693/1261 [08:49<07:06,  1.33it/s]
 55%|█████▌    | 694/1261 [08:50<07:16,  1.30it/s]
 55%|█████▌    | 695/1261 [08:50<07:31,  1.25it/s]
 55%|█████▌    | 696/1261 [08:51<07:24,  1.27it/s]
 55%|█████▌    | 697/1261 [08:52<07:24,  1.27it/s]
 55%|█████▌    | 698/1261 [08:53<07:16,  1.29it/s]
 55%|█████▌    | 699/1261 [08:54<07:14,  1.29it/s]
 56%|█████▌    | 700/1261 [08:54<07:09,  1.31it/s]
 56%|█████▌    | 701/1261 [08:55<07:10,  1.30it/s]
 56%|█████▌    | 702/1261 [08:56<07:09,  1.30it/s]
 56%|█████▌    | 703/1261 [08:57<07:09,  1.30it/s]
 56%|█████▌    | 704/1261 [08:57<07:06,  1.30it/s]
 56%|█████▌    | 705/1261 [08:58<07:04,  1.31it/s]
 56%|█████▌    | 706/1261 [08:59<07:07,  1.30it/s]
 56%|█████▌    | 707/1261 [09:00<07:07,  1.30it/s]
 56%|█████▌    | 708/1261 [09:00<07:06,  1.30it/s]
 56%|█████▌    | 709/1261 [09:01<07:05,  1.30it/s]
 56%|█████▋    | 710/1261 [09:02<07:07,  1.29it/s]
 56%|█████▋    | 711/1261 [09:03<07:05,  1.29it/s]
 56%|█████▋    | 712/1261 [09:04<07:02,  1.30it/s]
 57%|█████▋    | 713/1261 [09:04<07:01,  1.30it/s]
 57%|█████▋    | 714/1261 [09:05<07:02,  1.29it/s]
 57%|█████▋    | 715/1261 [09:06<06:59,  1.30it/s]
 57%|█████▋    | 716/1261 [09:07<06:58,  1.30it/s]
 57%|█████▋    | 717/1261 [09:07<06:56,  1.30it/s]
 57%|█████▋    | 718/1261 [09:08<06:58,  1.30it/s]
 57%|█████▋    | 719/1261 [09:09<06:56,  1.30it/s]
 57%|█████▋    | 720/1261 [09:10<06:57,  1.30it/s]
 57%|█████▋    | 721/1261 [09:10<06:56,  1.30it/s]
 57%|█████▋    | 722/1261 [09:11<06:55,  1.30it/s]
 57%|█████▋    | 723/1261 [09:12<06:52,  1.30it/s]
 57%|█████▋    | 724/1261 [09:13<06:50,  1.31it/s]
 57%|█████▋    | 725/1261 [09:14<06:50,  1.30it/s]
 58%|█████▊    | 726/1261 [09:14<06:51,  1.30it/s]
 58%|█████▊    | 727/1261 [09:15<06:50,  1.30it/s]
 58%|█████▊    | 728/1261 [09:16<06:47,  1.31it/s]
 58%|█████▊    | 729/1261 [09:17<06:50,  1.30it/s]
 58%|█████▊    | 730/1261 [09:17<06:49,  1.30it/s]
 58%|█████▊    | 731/1261 [09:18<06:47,  1.30it/s]
 58%|█████▊    | 732/1261 [09:19<06:45,  1.31it/s]
 58%|█████▊    | 733/1261 [09:20<06:44,  1.30it/s]
 58%|█████▊    | 734/1261 [09:20<06:46,  1.30it/s]
 58%|█████▊    | 735/1261 [09:21<06:42,  1.31it/s]
 58%|█████▊    | 736/1261 [09:22<06:42,  1.30it/s]
 58%|█████▊    | 737/1261 [09:23<06:42,  1.30it/s]
 59%|█████▊    | 738/1261 [09:24<06:44,  1.29it/s]
 59%|█████▊    | 739/1261 [09:24<06:42,  1.30it/s]
 59%|█████▊    | 740/1261 [09:25<06:42,  1.29it/s]
 59%|█████▉    | 741/1261 [09:26<06:40,  1.30it/s]
 59%|█████▉    | 742/1261 [09:27<06:42,  1.29it/s]
 59%|█████▉    | 743/1261 [09:27<06:42,  1.29it/s]
 59%|█████▉    | 744/1261 [09:28<06:41,  1.29it/s]
 59%|█████▉    | 745/1261 [09:29<06:41,  1.28it/s]
 59%|█████▉    | 746/1261 [09:30<06:44,  1.27it/s]
 59%|█████▉    | 747/1261 [09:31<06:41,  1.28it/s]
 59%|█████▉    | 748/1261 [09:31<06:40,  1.28it/s]
 59%|█████▉    | 749/1261 [09:32<06:36,  1.29it/s]
 59%|█████▉    | 750/1261 [09:33<06:36,  1.29it/s]
 60%|█████▉    | 751/1261 [09:34<06:33,  1.30it/s]
 60%|█████▉    | 752/1261 [09:34<06:31,  1.30it/s]
 60%|█████▉    | 753/1261 [09:35<06:29,  1.31it/s]
 60%|█████▉    | 754/1261 [09:36<06:30,  1.30it/s]
 60%|█████▉    | 755/1261 [09:37<06:28,  1.30it/s]
 60%|█████▉    | 756/1261 [09:37<06:27,  1.30it/s]
 60%|██████    | 757/1261 [09:38<06:24,  1.31it/s]
 60%|██████    | 758/1261 [09:39<06:23,  1.31it/s]
 60%|██████    | 759/1261 [09:40<06:23,  1.31it/s]
 60%|██████    | 760/1261 [09:41<06:22,  1.31it/s]
 60%|██████    | 761/1261 [09:41<06:23,  1.30it/s]
 60%|██████    | 762/1261 [09:42<06:22,  1.31it/s]
 61%|██████    | 763/1261 [09:43<06:19,  1.31it/s]
 61%|██████    | 764/1261 [09:44<06:17,  1.32it/s]
 61%|██████    | 765/1261 [09:44<06:15,  1.32it/s]
 61%|██████    | 766/1261 [09:45<06:17,  1.31it/s]
 61%|██████    | 767/1261 [09:46<06:15,  1.32it/s]
 61%|██████    | 768/1261 [09:47<06:18,  1.30it/s]
 61%|██████    | 769/1261 [09:47<06:17,  1.30it/s]
 61%|██████    | 770/1261 [09:48<06:15,  1.31it/s]
 61%|██████    | 771/1261 [09:49<06:14,  1.31it/s]
 61%|██████    | 772/1261 [09:50<06:15,  1.30it/s]
 61%|██████▏   | 773/1261 [09:50<06:16,  1.30it/s]
 61%|██████▏   | 774/1261 [09:51<06:14,  1.30it/s]
 61%|██████▏   | 775/1261 [09:52<06:12,  1.30it/s]
 62%|██████▏   | 776/1261 [09:53<06:11,  1.31it/s]
 62%|██████▏   | 777/1261 [09:54<06:09,  1.31it/s]
 62%|██████▏   | 778/1261 [09:54<06:05,  1.32it/s]
 62%|██████▏   | 779/1261 [09:55<06:05,  1.32it/s]
 62%|██████▏   | 780/1261 [09:56<06:04,  1.32it/s]
 62%|██████▏   | 781/1261 [09:57<06:04,  1.32it/s]
 62%|██████▏   | 782/1261 [09:57<06:02,  1.32it/s]
 62%|██████▏   | 783/1261 [09:58<06:01,  1.32it/s]
 62%|██████▏   | 784/1261 [09:59<05:59,  1.33it/s]
 62%|██████▏   | 785/1261 [10:00<05:58,  1.33it/s]
 62%|██████▏   | 786/1261 [10:00<05:56,  1.33it/s]
 62%|██████▏   | 787/1261 [10:01<05:57,  1.33it/s]
 62%|██████▏   | 788/1261 [10:02<05:56,  1.33it/s]
 63%|██████▎   | 789/1261 [10:03<05:55,  1.33it/s]
 63%|██████▎   | 790/1261 [10:03<05:54,  1.33it/s]
 63%|██████▎   | 791/1261 [10:04<05:54,  1.33it/s]
 63%|██████▎   | 792/1261 [10:05<05:52,  1.33it/s]
 63%|██████▎   | 793/1261 [10:06<05:53,  1.32it/s]
 63%|██████▎   | 794/1261 [10:06<05:52,  1.33it/s]
 63%|██████▎   | 795/1261 [10:07<05:51,  1.33it/s]
 63%|██████▎   | 796/1261 [10:08<05:53,  1.32it/s]
 63%|██████▎   | 797/1261 [10:09<05:52,  1.32it/s]
 63%|██████▎   | 798/1261 [10:09<05:51,  1.32it/s]
 63%|██████▎   | 799/1261 [10:10<05:50,  1.32it/s]
 63%|██████▎   | 800/1261 [10:11<05:47,  1.33it/s]
 64%|██████▎   | 801/1261 [10:12<05:45,  1.33it/s]
 64%|██████▎   | 802/1261 [10:12<05:48,  1.32it/s]
 64%|██████▎   | 803/1261 [10:13<05:46,  1.32it/s]
 64%|██████▍   | 804/1261 [10:14<05:44,  1.32it/s]
 64%|██████▍   | 805/1261 [10:15<05:42,  1.33it/s]
 64%|██████▍   | 806/1261 [10:15<05:43,  1.32it/s]
 64%|██████▍   | 807/1261 [10:16<05:45,  1.32it/s]
 64%|██████▍   | 808/1261 [10:17<05:42,  1.32it/s]
 64%|██████▍   | 809/1261 [10:18<05:41,  1.32it/s]
 64%|██████▍   | 810/1261 [10:18<05:40,  1.32it/s]
 64%|██████▍   | 811/1261 [10:19<05:41,  1.32it/s]
 64%|██████▍   | 812/1261 [10:20<05:39,  1.32it/s]
 64%|██████▍   | 813/1261 [10:21<05:38,  1.33it/s]
 65%|██████▍   | 814/1261 [10:21<05:38,  1.32it/s]
 65%|██████▍   | 815/1261 [10:22<05:36,  1.32it/s]
 65%|██████▍   | 816/1261 [10:23<05:35,  1.33it/s]
 65%|██████▍   | 817/1261 [10:24<05:34,  1.33it/s]
 65%|██████▍   | 818/1261 [10:24<05:35,  1.32it/s]
 65%|██████▍   | 819/1261 [10:25<05:33,  1.33it/s]
 65%|██████▌   | 820/1261 [10:26<05:32,  1.33it/s]
 65%|██████▌   | 821/1261 [10:27<05:30,  1.33it/s]
 65%|██████▌   | 822/1261 [10:27<05:31,  1.32it/s]
 65%|██████▌   | 823/1261 [10:28<05:30,  1.33it/s]
 65%|██████▌   | 824/1261 [10:29<05:29,  1.33it/s]
 65%|██████▌   | 825/1261 [10:30<05:31,  1.32it/s]
 66%|██████▌   | 826/1261 [10:31<05:40,  1.28it/s]
 66%|██████▌   | 827/1261 [10:31<05:39,  1.28it/s]
 66%|██████▌   | 828/1261 [10:32<05:34,  1.30it/s]
 66%|██████▌   | 829/1261 [10:33<05:33,  1.30it/s]
 66%|██████▌   | 830/1261 [10:34<05:31,  1.30it/s]
 66%|██████▌   | 831/1261 [10:34<05:31,  1.30it/s]
 66%|██████▌   | 832/1261 [10:35<05:28,  1.31it/s]
 66%|██████▌   | 833/1261 [10:36<05:26,  1.31it/s]
 66%|██████▌   | 834/1261 [10:37<05:28,  1.30it/s]
 66%|██████▌   | 835/1261 [10:37<05:26,  1.30it/s]
 66%|██████▋   | 836/1261 [10:38<05:25,  1.31it/s]
 66%|██████▋   | 837/1261 [10:39<05:24,  1.31it/s]
 66%|██████▋   | 838/1261 [10:40<05:23,  1.31it/s]
 67%|██████▋   | 839/1261 [10:41<05:22,  1.31it/s]
 67%|██████▋   | 840/1261 [10:41<05:20,  1.31it/s]
 67%|██████▋   | 841/1261 [10:42<05:19,  1.31it/s]
 67%|██████▋   | 842/1261 [10:43<05:17,  1.32it/s]
 67%|██████▋   | 843/1261 [10:44<05:18,  1.31it/s]
 67%|██████▋   | 844/1261 [10:44<05:15,  1.32it/s]
 67%|██████▋   | 845/1261 [10:45<05:13,  1.33it/s]
 67%|██████▋   | 846/1261 [10:46<05:13,  1.32it/s]
 67%|██████▋   | 847/1261 [10:47<05:14,  1.32it/s]
 67%|██████▋   | 848/1261 [10:47<05:14,  1.31it/s]
 67%|██████▋   | 849/1261 [10:48<05:12,  1.32it/s]
 67%|██████▋   | 850/1261 [10:49<05:13,  1.31it/s]
 67%|██████▋   | 851/1261 [10:50<05:12,  1.31it/s]
 68%|██████▊   | 852/1261 [10:50<05:12,  1.31it/s]
 68%|██████▊   | 853/1261 [10:51<05:10,  1.32it/s]
 68%|██████▊   | 854/1261 [10:52<05:09,  1.31it/s]
 68%|██████▊   | 855/1261 [10:53<05:08,  1.32it/s]
 68%|██████▊   | 856/1261 [10:53<05:07,  1.32it/s]
 68%|██████▊   | 857/1261 [10:54<05:06,  1.32it/s]
 68%|██████▊   | 858/1261 [10:55<05:08,  1.30it/s]
 68%|██████▊   | 859/1261 [10:56<05:09,  1.30it/s]
 68%|██████▊   | 860/1261 [10:57<05:07,  1.30it/s]
 68%|██████▊   | 861/1261 [10:57<05:06,  1.31it/s]
 68%|██████▊   | 862/1261 [10:58<05:06,  1.30it/s]
 68%|██████▊   | 863/1261 [10:59<05:04,  1.31it/s]
 69%|██████▊   | 864/1261 [11:00<05:03,  1.31it/s]
 69%|██████▊   | 865/1261 [11:00<05:02,  1.31it/s]
 69%|██████▊   | 866/1261 [11:01<05:01,  1.31it/s]
 69%|██████▉   | 867/1261 [11:02<05:00,  1.31it/s]
 69%|██████▉   | 868/1261 [11:03<04:58,  1.32it/s]
 69%|██████▉   | 869/1261 [11:03<04:58,  1.31it/s]
 69%|██████▉   | 870/1261 [11:04<04:58,  1.31it/s]
 69%|██████▉   | 871/1261 [11:05<04:57,  1.31it/s]
 69%|██████▉   | 872/1261 [11:06<04:55,  1.32it/s]
 69%|██████▉   | 873/1261 [11:06<04:53,  1.32it/s]
 69%|██████▉   | 874/1261 [11:07<04:52,  1.32it/s]
 69%|██████▉   | 875/1261 [11:08<05:01,  1.28it/s]
 69%|██████▉   | 876/1261 [11:09<04:56,  1.30it/s]
 70%|██████▉   | 877/1261 [11:10<04:53,  1.31it/s]
 70%|██████▉   | 878/1261 [11:10<04:54,  1.30it/s]
 70%|██████▉   | 879/1261 [11:11<04:53,  1.30it/s]
 70%|██████▉   | 880/1261 [11:12<04:49,  1.31it/s]
 70%|██████▉   | 881/1261 [11:13<04:49,  1.31it/s]
 70%|██████▉   | 882/1261 [11:13<04:48,  1.32it/s]
 70%|███████   | 883/1261 [11:14<04:45,  1.32it/s]
 70%|███████   | 884/1261 [11:15<04:44,  1.33it/s]
 70%|███████   | 885/1261 [11:16<04:43,  1.33it/s]
 70%|███████   | 886/1261 [11:16<04:45,  1.31it/s]
 70%|███████   | 887/1261 [11:17<04:44,  1.31it/s]
 70%|███████   | 888/1261 [11:18<04:42,  1.32it/s]
 70%|███████   | 889/1261 [11:19<04:40,  1.33it/s]
 71%|███████   | 890/1261 [11:19<04:41,  1.32it/s]
 71%|███████   | 891/1261 [11:20<04:38,  1.33it/s]
 71%|███████   | 892/1261 [11:21<04:38,  1.32it/s]
 71%|███████   | 893/1261 [11:22<04:36,  1.33it/s]
 71%|███████   | 894/1261 [11:22<04:37,  1.32it/s]
 71%|███████   | 895/1261 [11:23<04:38,  1.31it/s]
 71%|███████   | 896/1261 [11:24<04:37,  1.31it/s]
 71%|███████   | 897/1261 [11:25<04:36,  1.32it/s]
 71%|███████   | 898/1261 [11:26<04:46,  1.27it/s]
 71%|███████▏  | 899/1261 [11:26<04:42,  1.28it/s]
 71%|███████▏  | 900/1261 [11:27<04:40,  1.29it/s]
 71%|███████▏  | 901/1261 [11:28<04:38,  1.29it/s]
 72%|███████▏  | 902/1261 [11:29<04:35,  1.30it/s]
 72%|███████▏  | 903/1261 [11:29<04:32,  1.31it/s]
 72%|███████▏  | 904/1261 [11:30<04:32,  1.31it/s]
 72%|███████▏  | 905/1261 [11:31<04:29,  1.32it/s]
 72%|███████▏  | 906/1261 [11:32<04:28,  1.32it/s]
 72%|███████▏  | 907/1261 [11:32<04:26,  1.33it/s]
 72%|███████▏  | 908/1261 [11:33<04:24,  1.33it/s]
 72%|███████▏  | 909/1261 [11:34<04:22,  1.34it/s]
 72%|███████▏  | 910/1261 [11:35<04:24,  1.33it/s]
 72%|███████▏  | 911/1261 [11:35<04:23,  1.33it/s]
 72%|███████▏  | 912/1261 [11:36<04:22,  1.33it/s]
 72%|███████▏  | 913/1261 [11:37<04:21,  1.33it/s]
 72%|███████▏  | 914/1261 [11:38<04:21,  1.33it/s]
 73%|███████▎  | 915/1261 [11:38<04:20,  1.33it/s]
 73%|███████▎  | 916/1261 [11:39<04:18,  1.33it/s]
 73%|███████▎  | 917/1261 [11:40<04:16,  1.34it/s]
 73%|███████▎  | 918/1261 [11:41<04:16,  1.34it/s]
 73%|███████▎  | 919/1261 [11:41<04:16,  1.34it/s]
 73%|███████▎  | 920/1261 [11:42<04:16,  1.33it/s]
 73%|███████▎  | 921/1261 [11:43<04:14,  1.34it/s]
 73%|███████▎  | 922/1261 [11:44<04:15,  1.33it/s]
 73%|███████▎  | 923/1261 [11:44<04:15,  1.32it/s]
 73%|███████▎  | 924/1261 [11:45<04:15,  1.32it/s]
 73%|███████▎  | 925/1261 [11:46<04:14,  1.32it/s]
 73%|███████▎  | 926/1261 [11:47<04:18,  1.30it/s]
 74%|███████▎  | 927/1261 [11:47<04:15,  1.31it/s]
 74%|███████▎  | 928/1261 [11:48<04:13,  1.31it/s]
 74%|███████▎  | 929/1261 [11:49<04:11,  1.32it/s]
 74%|███████▍  | 930/1261 [11:50<04:13,  1.30it/s]
 74%|███████▍  | 931/1261 [11:50<04:13,  1.30it/s]
 74%|███████▍  | 932/1261 [11:51<04:10,  1.31it/s]
 74%|███████▍  | 933/1261 [11:52<04:08,  1.32it/s]
 74%|███████▍  | 934/1261 [11:53<04:08,  1.32it/s]
 74%|███████▍  | 935/1261 [11:53<04:07,  1.32it/s]
 74%|███████▍  | 936/1261 [11:54<04:06,  1.32it/s]
 74%|███████▍  | 937/1261 [11:55<04:05,  1.32it/s]
 74%|███████▍  | 938/1261 [11:56<04:04,  1.32it/s]
 74%|███████▍  | 939/1261 [11:57<04:03,  1.32it/s]
 75%|███████▍  | 940/1261 [11:57<04:01,  1.33it/s]
 75%|███████▍  | 941/1261 [11:58<04:01,  1.32it/s]
 75%|███████▍  | 942/1261 [11:59<04:01,  1.32it/s]
 75%|███████▍  | 943/1261 [12:00<04:00,  1.32it/s]
 75%|███████▍  | 944/1261 [12:00<03:59,  1.32it/s]
 75%|███████▍  | 945/1261 [12:01<03:58,  1.32it/s]
 75%|███████▌  | 946/1261 [12:02<04:06,  1.28it/s]
 75%|███████▌  | 947/1261 [12:03<04:07,  1.27it/s]
 75%|███████▌  | 948/1261 [12:04<04:09,  1.25it/s]
 75%|███████▌  | 949/1261 [12:04<04:06,  1.27it/s]
 75%|███████▌  | 950/1261 [12:05<04:02,  1.28it/s]
 75%|███████▌  | 951/1261 [12:06<03:59,  1.29it/s]
 75%|███████▌  | 952/1261 [12:07<03:57,  1.30it/s]
 76%|███████▌  | 953/1261 [12:07<03:55,  1.31it/s]
 76%|███████▌  | 954/1261 [12:08<04:02,  1.27it/s]
 76%|███████▌  | 955/1261 [12:09<03:58,  1.28it/s]
 76%|███████▌  | 956/1261 [12:10<04:03,  1.25it/s]
 76%|███████▌  | 957/1261 [12:11<04:07,  1.23it/s]
 76%|███████▌  | 958/1261 [12:11<04:06,  1.23it/s]
 76%|███████▌  | 959/1261 [12:12<04:02,  1.24it/s]
 76%|███████▌  | 960/1261 [12:13<04:02,  1.24it/s]
 76%|███████▌  | 961/1261 [12:14<03:59,  1.25it/s]
 76%|███████▋  | 962/1261 [12:15<03:56,  1.26it/s]
 76%|███████▋  | 963/1261 [12:15<03:52,  1.28it/s]
 76%|███████▋  | 964/1261 [12:16<03:51,  1.28it/s]
 77%|███████▋  | 965/1261 [12:17<03:50,  1.29it/s]
 77%|███████▋  | 966/1261 [12:18<03:48,  1.29it/s]
 77%|███████▋  | 967/1261 [12:18<03:46,  1.30it/s]
 77%|███████▋  | 968/1261 [12:19<03:44,  1.31it/s]
 77%|███████▋  | 969/1261 [12:20<03:44,  1.30it/s]
 77%|███████▋  | 970/1261 [12:21<03:43,  1.30it/s]
 77%|███████▋  | 971/1261 [12:21<03:43,  1.30it/s]
 77%|███████▋  | 972/1261 [12:22<03:41,  1.30it/s]
 77%|███████▋  | 973/1261 [12:23<03:40,  1.31it/s]
 77%|███████▋  | 974/1261 [12:24<03:41,  1.30it/s]
 77%|███████▋  | 975/1261 [12:25<03:39,  1.30it/s]
 77%|███████▋  | 976/1261 [12:25<03:38,  1.30it/s]
 77%|███████▋  | 977/1261 [12:26<03:37,  1.31it/s]
 78%|███████▊  | 978/1261 [12:27<03:37,  1.30it/s]
 78%|███████▊  | 979/1261 [12:28<03:36,  1.30it/s]
 78%|███████▊  | 980/1261 [12:28<03:35,  1.30it/s]
 78%|███████▊  | 981/1261 [12:29<03:34,  1.31it/s]
 78%|███████▊  | 982/1261 [12:30<03:35,  1.29it/s]
 78%|███████▊  | 983/1261 [12:31<03:34,  1.30it/s]
 78%|███████▊  | 984/1261 [12:31<03:33,  1.30it/s]
 78%|███████▊  | 985/1261 [12:32<03:33,  1.30it/s]
 78%|███████▊  | 986/1261 [12:33<03:33,  1.29it/s]
 78%|███████▊  | 987/1261 [12:34<03:32,  1.29it/s]
 78%|███████▊  | 988/1261 [12:35<03:30,  1.30it/s]
 78%|███████▊  | 989/1261 [12:35<03:28,  1.30it/s]
 79%|███████▊  | 990/1261 [12:36<03:29,  1.30it/s]
 79%|███████▊  | 991/1261 [12:38<04:23,  1.02it/s]
 79%|███████▊  | 992/1261 [12:39<04:23,  1.02it/s]
 79%|███████▊  | 993/1261 [12:39<04:06,  1.09it/s]
 79%|███████▉  | 994/1261 [12:40<03:52,  1.15it/s]
 79%|███████▉  | 995/1261 [12:41<03:42,  1.19it/s]
 79%|███████▉  | 996/1261 [12:42<03:36,  1.22it/s]
 79%|███████▉  | 997/1261 [12:42<03:31,  1.25it/s]
 79%|███████▉  | 998/1261 [12:43<03:28,  1.26it/s]
 79%|███████▉  | 999/1261 [12:44<03:26,  1.27it/s]
 79%|███████▉  | 1000/1261 [12:45<03:25,  1.27it/s]
 79%|███████▉  | 1001/1261 [12:45<03:23,  1.28it/s]
 79%|███████▉  | 1002/1261 [12:46<03:22,  1.28it/s]
 80%|███████▉  | 1003/1261 [12:47<03:23,  1.27it/s]
 80%|███████▉  | 1004/1261 [12:48<03:22,  1.27it/s]
 80%|███████▉  | 1005/1261 [12:49<03:19,  1.28it/s]
 80%|███████▉  | 1006/1261 [12:49<03:18,  1.28it/s]
 80%|███████▉  | 1007/1261 [12:50<03:17,  1.29it/s]
 80%|███████▉  | 1008/1261 [12:51<03:16,  1.29it/s]
 80%|████████  | 1009/1261 [12:52<03:15,  1.29it/s]
 80%|████████  | 1010/1261 [12:52<03:15,  1.29it/s]
 80%|████████  | 1011/1261 [12:53<03:13,  1.29it/s]
 80%|████████  | 1012/1261 [12:54<03:12,  1.30it/s]
 80%|████████  | 1013/1261 [12:55<03:11,  1.29it/s]
 80%|████████  | 1014/1261 [12:56<03:10,  1.30it/s]
 80%|████████  | 1015/1261 [12:56<03:09,  1.30it/s]
 81%|████████  | 1016/1261 [12:57<03:08,  1.30it/s]
 81%|████████  | 1017/1261 [12:58<03:08,  1.30it/s]
 81%|████████  | 1018/1261 [12:59<03:20,  1.21it/s]
 81%|████████  | 1019/1261 [13:00<03:17,  1.23it/s]
 81%|████████  | 1020/1261 [13:00<03:11,  1.26it/s]
 81%|████████  | 1021/1261 [13:01<03:07,  1.28it/s]
 81%|████████  | 1022/1261 [13:02<03:05,  1.29it/s]
 81%|████████  | 1023/1261 [13:03<03:03,  1.30it/s]
 81%|████████  | 1024/1261 [13:03<03:00,  1.31it/s]
 81%|████████▏ | 1025/1261 [13:04<02:59,  1.31it/s]
 81%|████████▏ | 1026/1261 [13:05<02:59,  1.31it/s]
 81%|████████▏ | 1027/1261 [13:06<02:56,  1.32it/s]
 82%|████████▏ | 1028/1261 [13:06<02:55,  1.33it/s]
 82%|████████▏ | 1029/1261 [13:07<02:56,  1.32it/s]
 82%|████████▏ | 1030/1261 [13:08<02:56,  1.31it/s]
 82%|████████▏ | 1031/1261 [13:09<02:54,  1.32it/s]
 82%|████████▏ | 1032/1261 [13:09<02:53,  1.32it/s]
 82%|████████▏ | 1033/1261 [13:10<02:52,  1.32it/s]
 82%|████████▏ | 1034/1261 [13:11<02:51,  1.33it/s]
 82%|████████▏ | 1035/1261 [13:12<02:50,  1.32it/s]
 82%|████████▏ | 1036/1261 [13:12<02:50,  1.32it/s]
 82%|████████▏ | 1037/1261 [13:13<02:49,  1.32it/s]
 82%|████████▏ | 1038/1261 [13:14<02:47,  1.33it/s]
 82%|████████▏ | 1039/1261 [13:15<02:46,  1.34it/s]
 82%|████████▏ | 1040/1261 [13:15<02:45,  1.34it/s]
 83%|████████▎ | 1041/1261 [13:16<02:44,  1.34it/s]
 83%|████████▎ | 1042/1261 [13:17<02:44,  1.33it/s]
 83%|████████▎ | 1043/1261 [13:18<02:43,  1.33it/s]
 83%|████████▎ | 1044/1261 [13:18<02:42,  1.33it/s]
 83%|████████▎ | 1045/1261 [13:19<02:41,  1.33it/s]
 83%|████████▎ | 1046/1261 [13:20<02:42,  1.33it/s]
 83%|████████▎ | 1047/1261 [13:21<02:40,  1.33it/s]
 83%|████████▎ | 1048/1261 [13:21<02:39,  1.33it/s]
 83%|████████▎ | 1049/1261 [13:22<02:38,  1.34it/s]
 83%|████████▎ | 1050/1261 [13:23<02:36,  1.35it/s]
 83%|████████▎ | 1051/1261 [13:24<02:34,  1.36it/s]
 83%|████████▎ | 1052/1261 [13:24<02:33,  1.36it/s]
 84%|████████▎ | 1053/1261 [13:25<02:32,  1.36it/s]
 84%|████████▎ | 1054/1261 [13:26<02:32,  1.35it/s]
 84%|████████▎ | 1055/1261 [13:27<02:32,  1.35it/s]
 84%|████████▎ | 1056/1261 [13:27<02:32,  1.34it/s]
 84%|████████▍ | 1057/1261 [13:28<02:31,  1.35it/s]
 84%|████████▍ | 1058/1261 [13:29<02:30,  1.35it/s]
 84%|████████▍ | 1059/1261 [13:30<02:30,  1.34it/s]
 84%|████████▍ | 1060/1261 [13:30<02:30,  1.34it/s]
 84%|████████▍ | 1061/1261 [13:31<02:29,  1.33it/s]
 84%|████████▍ | 1062/1261 [13:32<02:29,  1.33it/s]
 84%|████████▍ | 1063/1261 [13:33<02:28,  1.34it/s]
 84%|████████▍ | 1064/1261 [13:33<02:26,  1.34it/s]
 84%|████████▍ | 1065/1261 [13:34<02:25,  1.34it/s]
 85%|████████▍ | 1066/1261 [13:35<02:26,  1.33it/s]
 85%|████████▍ | 1067/1261 [13:36<02:25,  1.33it/s]
 85%|████████▍ | 1068/1261 [13:36<02:25,  1.33it/s]
 85%|████████▍ | 1069/1261 [13:37<02:25,  1.32it/s]
 85%|████████▍ | 1070/1261 [13:38<02:25,  1.32it/s]
 85%|████████▍ | 1071/1261 [13:39<02:24,  1.31it/s]
 85%|████████▌ | 1072/1261 [13:39<02:24,  1.31it/s]
 85%|████████▌ | 1073/1261 [13:40<02:23,  1.31it/s]
 85%|████████▌ | 1074/1261 [13:41<02:22,  1.31it/s]
 85%|████████▌ | 1075/1261 [13:42<02:23,  1.30it/s]
 85%|████████▌ | 1076/1261 [13:43<02:24,  1.28it/s]
 85%|████████▌ | 1077/1261 [13:43<02:21,  1.30it/s]
 85%|████████▌ | 1078/1261 [13:44<02:20,  1.30it/s]
 86%|████████▌ | 1079/1261 [13:45<02:18,  1.31it/s]
 86%|████████▌ | 1080/1261 [13:46<02:17,  1.31it/s]
 86%|████████▌ | 1081/1261 [13:46<02:15,  1.32it/s]
 86%|████████▌ | 1082/1261 [13:47<02:14,  1.33it/s]
 86%|████████▌ | 1083/1261 [13:48<02:13,  1.33it/s]
 86%|████████▌ | 1084/1261 [13:49<02:12,  1.34it/s]
 86%|████████▌ | 1085/1261 [13:49<02:11,  1.33it/s]
 86%|████████▌ | 1086/1261 [13:50<02:11,  1.33it/s]
 86%|████████▌ | 1087/1261 [13:51<02:10,  1.33it/s]
 86%|████████▋ | 1088/1261 [13:52<02:11,  1.32it/s]
 86%|████████▋ | 1089/1261 [13:52<02:10,  1.31it/s]
 86%|████████▋ | 1090/1261 [13:53<02:10,  1.31it/s]
 87%|████████▋ | 1091/1261 [13:54<02:08,  1.32it/s]
 87%|████████▋ | 1092/1261 [13:55<02:07,  1.32it/s]
 87%|████████▋ | 1093/1261 [13:55<02:06,  1.33it/s]
 87%|████████▋ | 1094/1261 [13:56<02:06,  1.33it/s]
 87%|████████▋ | 1095/1261 [13:57<02:04,  1.33it/s]
 87%|████████▋ | 1096/1261 [13:58<02:05,  1.32it/s]
 87%|████████▋ | 1097/1261 [13:58<02:04,  1.32it/s]
 87%|████████▋ | 1098/1261 [13:59<02:03,  1.33it/s]
 87%|████████▋ | 1099/1261 [14:00<02:02,  1.32it/s]
 87%|████████▋ | 1100/1261 [14:01<02:01,  1.33it/s]
 87%|████████▋ | 1101/1261 [14:01<02:01,  1.32it/s]
 87%|████████▋ | 1102/1261 [14:02<02:00,  1.32it/s]
 87%|████████▋ | 1103/1261 [14:03<01:59,  1.33it/s]
 88%|████████▊ | 1104/1261 [14:04<01:58,  1.32it/s]
 88%|████████▊ | 1105/1261 [14:04<01:57,  1.32it/s]
 88%|████████▊ | 1106/1261 [14:05<01:56,  1.33it/s]
 88%|████████▊ | 1107/1261 [14:06<01:55,  1.33it/s]
 88%|████████▊ | 1108/1261 [14:07<01:54,  1.33it/s]
 88%|████████▊ | 1109/1261 [14:07<01:54,  1.33it/s]
 88%|████████▊ | 1110/1261 [14:08<01:53,  1.33it/s]
 88%|████████▊ | 1111/1261 [14:09<01:52,  1.33it/s]
 88%|████████▊ | 1112/1261 [14:10<01:52,  1.33it/s]
 88%|████████▊ | 1113/1261 [14:10<01:51,  1.33it/s]
 88%|████████▊ | 1114/1261 [14:11<01:50,  1.33it/s]
 88%|████████▊ | 1115/1261 [14:12<01:50,  1.33it/s]
 89%|████████▊ | 1116/1261 [14:13<01:49,  1.33it/s]
 89%|████████▊ | 1117/1261 [14:13<01:48,  1.33it/s]
 89%|████████▊ | 1118/1261 [14:14<01:46,  1.34it/s]
 89%|████████▊ | 1119/1261 [14:15<01:45,  1.34it/s]
 89%|████████▉ | 1120/1261 [14:16<01:46,  1.33it/s]
 89%|████████▉ | 1121/1261 [14:16<01:45,  1.32it/s]
 89%|████████▉ | 1122/1261 [14:17<01:44,  1.33it/s]
 89%|████████▉ | 1123/1261 [14:18<01:44,  1.33it/s]
 89%|████████▉ | 1124/1261 [14:19<01:42,  1.33it/s]
 89%|████████▉ | 1125/1261 [14:19<01:41,  1.33it/s]
 89%|████████▉ | 1126/1261 [14:20<01:40,  1.34it/s]
 89%|████████▉ | 1127/1261 [14:21<01:40,  1.34it/s]
 89%|████████▉ | 1128/1261 [14:22<01:39,  1.34it/s]
 90%|████████▉ | 1129/1261 [14:22<01:38,  1.35it/s]
 90%|████████▉ | 1130/1261 [14:23<01:37,  1.35it/s]
 90%|████████▉ | 1131/1261 [14:24<01:36,  1.34it/s]
 90%|████████▉ | 1132/1261 [14:25<01:35,  1.35it/s]
 90%|████████▉ | 1133/1261 [14:25<01:35,  1.34it/s]
 90%|████████▉ | 1134/1261 [14:26<01:34,  1.35it/s]
 90%|█████████ | 1135/1261 [14:27<01:33,  1.35it/s]
 90%|█████████ | 1136/1261 [14:28<01:33,  1.34it/s]
 90%|█████████ | 1137/1261 [14:28<01:32,  1.34it/s]
 90%|█████████ | 1138/1261 [14:29<01:31,  1.35it/s]
 90%|█████████ | 1139/1261 [14:30<01:31,  1.34it/s]
 90%|█████████ | 1140/1261 [14:31<01:29,  1.35it/s]
 90%|█████████ | 1141/1261 [14:31<01:29,  1.35it/s]
 91%|█████████ | 1142/1261 [14:32<01:28,  1.35it/s]
 91%|█████████ | 1143/1261 [14:33<01:28,  1.34it/s]
 91%|█████████ | 1144/1261 [14:34<01:27,  1.34it/s]
 91%|█████████ | 1145/1261 [14:34<01:26,  1.35it/s]
 91%|█████████ | 1146/1261 [14:35<01:25,  1.35it/s]
 91%|█████████ | 1147/1261 [14:36<01:24,  1.34it/s]
 91%|█████████ | 1148/1261 [14:37<01:23,  1.35it/s]
 91%|█████████ | 1149/1261 [14:37<01:23,  1.34it/s]
 91%|█████████ | 1150/1261 [14:38<01:22,  1.35it/s]
 91%|█████████▏| 1151/1261 [14:39<01:21,  1.35it/s]
 91%|█████████▏| 1152/1261 [14:39<01:20,  1.35it/s]
 91%|█████████▏| 1153/1261 [14:40<01:19,  1.35it/s]
 92%|█████████▏| 1154/1261 [14:41<01:19,  1.35it/s]
 92%|█████████▏| 1155/1261 [14:42<01:18,  1.35it/s]
 92%|█████████▏| 1156/1261 [14:42<01:18,  1.34it/s]
 92%|█████████▏| 1157/1261 [14:43<01:17,  1.35it/s]
 92%|█████████▏| 1158/1261 [14:44<01:16,  1.34it/s]
 92%|█████████▏| 1159/1261 [14:45<01:16,  1.34it/s]
 92%|█████████▏| 1160/1261 [14:45<01:15,  1.34it/s]
 92%|█████████▏| 1161/1261 [14:46<01:14,  1.34it/s]
 92%|█████████▏| 1162/1261 [14:47<01:13,  1.34it/s]
 92%|█████████▏| 1163/1261 [14:48<01:13,  1.33it/s]
 92%|█████████▏| 1164/1261 [14:48<01:12,  1.34it/s]
 92%|█████████▏| 1165/1261 [14:49<01:11,  1.34it/s]
 92%|█████████▏| 1166/1261 [14:50<01:11,  1.34it/s]
 93%|█████████▎| 1167/1261 [14:51<01:10,  1.34it/s]
 93%|█████████▎| 1168/1261 [14:51<01:09,  1.34it/s]
 93%|█████████▎| 1169/1261 [14:52<01:08,  1.34it/s]
 93%|█████████▎| 1170/1261 [14:53<01:07,  1.35it/s]
 93%|█████████▎| 1171/1261 [14:54<01:06,  1.35it/s]
 93%|█████████▎| 1172/1261 [14:54<01:06,  1.35it/s]
 93%|█████████▎| 1173/1261 [14:55<01:05,  1.35it/s]
 93%|█████████▎| 1174/1261 [14:56<01:04,  1.35it/s]
 93%|█████████▎| 1175/1261 [14:57<01:03,  1.35it/s]
 93%|█████████▎| 1176/1261 [14:57<01:03,  1.35it/s]
 93%|█████████▎| 1177/1261 [14:58<01:02,  1.35it/s]
 93%|█████████▎| 1178/1261 [14:59<01:01,  1.36it/s]
 93%|█████████▎| 1179/1261 [15:00<01:00,  1.36it/s]
 94%|█████████▎| 1180/1261 [15:00<00:59,  1.36it/s]
 94%|█████████▎| 1181/1261 [15:01<00:59,  1.35it/s]
 94%|█████████▎| 1182/1261 [15:02<00:58,  1.35it/s]
 94%|█████████▍| 1183/1261 [15:03<00:57,  1.35it/s]
 94%|█████████▍| 1184/1261 [15:03<00:56,  1.35it/s]
 94%|█████████▍| 1185/1261 [15:04<00:55,  1.36it/s]
 94%|█████████▍| 1186/1261 [15:05<00:55,  1.35it/s]
 94%|█████████▍| 1187/1261 [15:05<00:54,  1.36it/s]
 94%|█████████▍| 1188/1261 [15:06<00:53,  1.36it/s]
 94%|█████████▍| 1189/1261 [15:07<00:52,  1.36it/s]
 94%|█████████▍| 1190/1261 [15:08<00:52,  1.35it/s]
 94%|█████████▍| 1191/1261 [15:08<00:51,  1.35it/s]
 95%|█████████▍| 1192/1261 [15:09<00:50,  1.35it/s]
 95%|█████████▍| 1193/1261 [15:10<00:50,  1.35it/s]
 95%|█████████▍| 1194/1261 [15:11<00:50,  1.33it/s]
 95%|█████████▍| 1195/1261 [15:11<00:49,  1.34it/s]
 95%|█████████▍| 1196/1261 [15:12<00:48,  1.34it/s]
 95%|█████████▍| 1197/1261 [15:13<00:47,  1.35it/s]
 95%|█████████▌| 1198/1261 [15:14<00:47,  1.33it/s]
 95%|█████████▌| 1199/1261 [15:14<00:46,  1.34it/s]
 95%|█████████▌| 1200/1261 [15:15<00:45,  1.33it/s]
 95%|█████████▌| 1201/1261 [15:16<00:44,  1.34it/s]
 95%|█████████▌| 1202/1261 [15:17<00:44,  1.33it/s]
 95%|█████████▌| 1203/1261 [15:17<00:43,  1.34it/s]
 95%|█████████▌| 1204/1261 [15:18<00:42,  1.34it/s]
 96%|█████████▌| 1205/1261 [15:19<00:41,  1.35it/s]
 96%|█████████▌| 1206/1261 [15:20<00:41,  1.33it/s]
 96%|█████████▌| 1207/1261 [15:20<00:40,  1.34it/s]
 96%|█████████▌| 1208/1261 [15:21<00:39,  1.33it/s]
 96%|█████████▌| 1209/1261 [15:22<00:38,  1.33it/s]
 96%|█████████▌| 1210/1261 [15:23<00:38,  1.33it/s]
 96%|█████████▌| 1211/1261 [15:23<00:37,  1.34it/s]
 96%|█████████▌| 1212/1261 [15:24<00:36,  1.34it/s]
 96%|█████████▌| 1213/1261 [15:25<00:35,  1.34it/s]
 96%|█████████▋| 1214/1261 [15:26<00:35,  1.34it/s]
 96%|█████████▋| 1215/1261 [15:26<00:34,  1.34it/s]
 96%|█████████▋| 1216/1261 [15:27<00:33,  1.35it/s]
 97%|█████████▋| 1217/1261 [15:28<00:32,  1.34it/s]
 97%|█████████▋| 1218/1261 [15:29<00:31,  1.35it/s]
 97%|█████████▋| 1219/1261 [15:29<00:31,  1.35it/s]
 97%|█████████▋| 1220/1261 [15:30<00:32,  1.28it/s]
 97%|█████████▋| 1221/1261 [15:31<00:31,  1.28it/s]
 97%|█████████▋| 1222/1261 [15:32<00:30,  1.29it/s]
 97%|█████████▋| 1223/1261 [15:33<00:29,  1.30it/s]
 97%|█████████▋| 1224/1261 [15:33<00:28,  1.31it/s]
 97%|█████████▋| 1225/1261 [15:34<00:27,  1.32it/s]
 97%|█████████▋| 1226/1261 [15:35<00:26,  1.33it/s]
 97%|█████████▋| 1227/1261 [15:35<00:25,  1.33it/s]
 97%|█████████▋| 1228/1261 [15:36<00:24,  1.34it/s]
 97%|█████████▋| 1229/1261 [15:37<00:23,  1.34it/s]
 98%|█████████▊| 1230/1261 [15:38<00:23,  1.34it/s]
 98%|█████████▊| 1231/1261 [15:38<00:22,  1.33it/s]
 98%|█████████▊| 1232/1261 [15:39<00:21,  1.34it/s]
 98%|█████████▊| 1233/1261 [15:40<00:20,  1.35it/s]
 98%|█████████▊| 1234/1261 [15:41<00:20,  1.35it/s]
 98%|█████████▊| 1235/1261 [15:41<00:19,  1.34it/s]
 98%|█████████▊| 1236/1261 [15:42<00:18,  1.35it/s]
 98%|█████████▊| 1237/1261 [15:43<00:17,  1.35it/s]
 98%|█████████▊| 1238/1261 [15:44<00:16,  1.35it/s]
 98%|█████████▊| 1239/1261 [15:44<00:16,  1.35it/s]
 98%|█████████▊| 1240/1261 [15:45<00:15,  1.34it/s]
 98%|█████████▊| 1241/1261 [15:46<00:14,  1.34it/s]
 98%|█████████▊| 1242/1261 [15:47<00:14,  1.33it/s]
 99%|█████████▊| 1243/1261 [15:47<00:13,  1.32it/s]
 99%|█████████▊| 1244/1261 [15:48<00:12,  1.33it/s]
 99%|█████████▊| 1245/1261 [15:49<00:12,  1.33it/s]
 99%|█████████▉| 1246/1261 [15:50<00:11,  1.33it/s]
 99%|█████████▉| 1247/1261 [15:50<00:10,  1.33it/s]
 99%|█████████▉| 1248/1261 [15:51<00:09,  1.33it/s]
 99%|█████████▉| 1249/1261 [15:52<00:09,  1.33it/s]
 99%|█████████▉| 1250/1261 [15:53<00:08,  1.34it/s]
 99%|█████████▉| 1251/1261 [15:53<00:07,  1.34it/s]
 99%|█████████▉| 1252/1261 [15:54<00:06,  1.33it/s]
 99%|█████████▉| 1253/1261 [15:55<00:05,  1.33it/s]
 99%|█████████▉| 1254/1261 [15:56<00:05,  1.34it/s]
100%|█████████▉| 1255/1261 [15:56<00:04,  1.34it/s]
100%|█████████▉| 1256/1261 [15:57<00:03,  1.34it/s]
100%|█████████▉| 1257/1261 [15:58<00:02,  1.33it/s]
100%|█████████▉| 1258/1261 [15:59<00:02,  1.34it/s]
100%|█████████▉| 1259/1261 [15:59<00:01,  1.34it/s]
100%|█████████▉| 1260/1261 [16:00<00:00,  1.34it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_output_svm.mp4 

CPU times: user 15min 39s, sys: 15.5 s, total: 15min 55s
Wall time: 16min 1s
Completed

Project Video - HOG + Neural Networks

In [187]:
pipeline1 = pipeline(extractor, 
                     cars_classifier=cars_classifier_hog_nn,
                     debug=False, 
                     debug_image=False)

from moviepy.editor import VideoFileClip
output_video_name = 'project_video_output_hog_nn.mp4'
clip1 = VideoFileClip("project_video.mp4")
clip2 = clip1.subclip(41,48)
output_video = clip1.fl_image(lambda x: pipeline1.search_cars_by_steps(x)) #NOTE: this function expects color images!!
%time output_video.write_videofile(output_video_name, audio=False)
print ("Completed")
 .. classifier loaded 
[MoviePy] >>>> Building video project_video_output_hog_nn.mp4
[MoviePy] Writing video project_video_output_hog_nn.mp4
  0%|          | 0/1261 [00:00<?, ?it/s]
  0%|          | 1/1261 [00:01<23:06,  1.10s/it]
  0%|          | 2/1261 [00:02<22:47,  1.09s/it]
  0%|          | 3/1261 [00:03<22:11,  1.06s/it]
  0%|          | 4/1261 [00:04<21:37,  1.03s/it]
  0%|          | 5/1261 [00:05<24:54,  1.19s/it]
  0%|          | 6/1261 [00:07<27:42,  1.32s/it]
  1%|          | 7/1261 [00:08<26:12,  1.25s/it]
  1%|          | 8/1261 [00:09<24:42,  1.18s/it]
  1%|          | 9/1261 [00:10<23:45,  1.14s/it]
  1%|          | 10/1261 [00:11<23:11,  1.11s/it]
  1%|          | 11/1261 [00:12<23:20,  1.12s/it]
  1%|          | 12/1261 [00:13<23:22,  1.12s/it]
  1%|          | 13/1261 [00:14<22:36,  1.09s/it]
  1%|          | 14/1261 [00:16<24:55,  1.20s/it]
  1%|          | 15/1261 [00:17<24:59,  1.20s/it]
  1%|▏         | 16/1261 [00:18<23:57,  1.15s/it]
  1%|▏         | 17/1261 [00:19<23:01,  1.11s/it]
  1%|▏         | 18/1261 [00:20<23:32,  1.14s/it]
  2%|▏         | 19/1261 [00:21<24:14,  1.17s/it]
  2%|▏         | 20/1261 [00:23<24:16,  1.17s/it]
  2%|▏         | 21/1261 [00:24<26:10,  1.27s/it]
  2%|▏         | 22/1261 [00:26<27:01,  1.31s/it]
  2%|▏         | 23/1261 [00:26<24:41,  1.20s/it]
  2%|▏         | 24/1261 [00:27<23:13,  1.13s/it]
  2%|▏         | 25/1261 [00:28<22:13,  1.08s/it]
  2%|▏         | 26/1261 [00:30<23:46,  1.15s/it]
  2%|▏         | 27/1261 [00:31<23:32,  1.14s/it]
  2%|▏         | 28/1261 [00:32<24:30,  1.19s/it]
  2%|▏         | 29/1261 [00:33<25:05,  1.22s/it]
  2%|▏         | 30/1261 [00:35<24:32,  1.20s/it]
  2%|▏         | 31/1261 [00:36<23:45,  1.16s/it]
  3%|▎         | 32/1261 [00:37<22:41,  1.11s/it]
  3%|▎         | 33/1261 [00:38<21:51,  1.07s/it]
  3%|▎         | 34/1261 [00:39<23:44,  1.16s/it]
  3%|▎         | 35/1261 [00:40<25:02,  1.23s/it]
  3%|▎         | 36/1261 [00:42<26:41,  1.31s/it]
  3%|▎         | 37/1261 [00:43<26:39,  1.31s/it]
  3%|▎         | 38/1261 [00:45<29:16,  1.44s/it]
  3%|▎         | 39/1261 [00:46<28:40,  1.41s/it]
  3%|▎         | 40/1261 [00:48<28:30,  1.40s/it]
  3%|▎         | 41/1261 [00:49<29:14,  1.44s/it]
  3%|▎         | 42/1261 [00:50<27:30,  1.35s/it]
  3%|▎         | 43/1261 [00:52<26:44,  1.32s/it]
  3%|▎         | 44/1261 [00:53<29:15,  1.44s/it]
  4%|▎         | 45/1261 [00:55<29:52,  1.47s/it]
  4%|▎         | 46/1261 [00:56<28:13,  1.39s/it]
  4%|▎         | 47/1261 [00:57<26:16,  1.30s/it]
  4%|▍         | 48/1261 [00:58<24:56,  1.23s/it]
  4%|▍         | 49/1261 [00:59<23:30,  1.16s/it]
  4%|▍         | 50/1261 [01:00<22:59,  1.14s/it]
  4%|▍         | 51/1261 [01:01<22:24,  1.11s/it]
  4%|▍         | 52/1261 [01:02<22:04,  1.10s/it]
  4%|▍         | 53/1261 [01:03<21:35,  1.07s/it]
  4%|▍         | 54/1261 [01:04<21:38,  1.08s/it]
  4%|▍         | 55/1261 [01:06<22:07,  1.10s/it]
  4%|▍         | 56/1261 [01:07<23:02,  1.15s/it]
  5%|▍         | 57/1261 [01:08<24:02,  1.20s/it]
  5%|▍         | 58/1261 [01:10<25:14,  1.26s/it]
  5%|▍         | 59/1261 [01:11<24:38,  1.23s/it]
  5%|▍         | 60/1261 [01:12<23:29,  1.17s/it]
  5%|▍         | 61/1261 [01:13<23:14,  1.16s/it]
  5%|▍         | 62/1261 [01:14<22:32,  1.13s/it]
  5%|▍         | 63/1261 [01:15<22:30,  1.13s/it]
  5%|▌         | 64/1261 [01:16<22:21,  1.12s/it]
  5%|▌         | 65/1261 [01:17<22:01,  1.10s/it]
  5%|▌         | 66/1261 [01:18<21:23,  1.07s/it]
  5%|▌         | 67/1261 [01:19<20:52,  1.05s/it]
  5%|▌         | 68/1261 [01:21<22:34,  1.14s/it]
  5%|▌         | 69/1261 [01:22<22:38,  1.14s/it]
  6%|▌         | 70/1261 [01:23<22:46,  1.15s/it]
  6%|▌         | 71/1261 [01:24<22:40,  1.14s/it]
  6%|▌         | 72/1261 [01:25<23:11,  1.17s/it]
  6%|▌         | 73/1261 [01:27<25:39,  1.30s/it]
  6%|▌         | 74/1261 [01:28<26:10,  1.32s/it]
  6%|▌         | 75/1261 [01:30<26:33,  1.34s/it]
  6%|▌         | 76/1261 [01:31<26:21,  1.33s/it]
  6%|▌         | 77/1261 [01:32<24:31,  1.24s/it]
  6%|▌         | 78/1261 [01:33<23:32,  1.19s/it]
  6%|▋         | 79/1261 [01:34<23:10,  1.18s/it]
  6%|▋         | 80/1261 [01:35<22:42,  1.15s/it]
  6%|▋         | 81/1261 [01:36<22:41,  1.15s/it]
  7%|▋         | 82/1261 [01:38<24:25,  1.24s/it]
  7%|▋         | 83/1261 [01:39<23:21,  1.19s/it]
  7%|▋         | 84/1261 [01:40<22:46,  1.16s/it]
  7%|▋         | 85/1261 [01:41<22:15,  1.14s/it]
  7%|▋         | 86/1261 [01:43<23:35,  1.20s/it]
  7%|▋         | 87/1261 [01:44<22:56,  1.17s/it]
  7%|▋         | 88/1261 [01:45<21:56,  1.12s/it]
  7%|▋         | 89/1261 [01:46<22:55,  1.17s/it]
  7%|▋         | 90/1261 [01:47<22:12,  1.14s/it]
  7%|▋         | 91/1261 [01:48<23:00,  1.18s/it]
  7%|▋         | 92/1261 [01:50<24:25,  1.25s/it]
  7%|▋         | 93/1261 [01:51<23:05,  1.19s/it]
  7%|▋         | 94/1261 [01:52<25:56,  1.33s/it]
  8%|▊         | 95/1261 [01:54<26:54,  1.38s/it]
  8%|▊         | 96/1261 [01:55<26:25,  1.36s/it]
  8%|▊         | 97/1261 [01:56<25:31,  1.32s/it]
  8%|▊         | 98/1261 [01:58<24:30,  1.26s/it]
  8%|▊         | 99/1261 [01:59<23:41,  1.22s/it]
  8%|▊         | 100/1261 [02:00<23:33,  1.22s/it]
  8%|▊         | 101/1261 [02:01<23:04,  1.19s/it]
  8%|▊         | 102/1261 [02:02<24:08,  1.25s/it]
  8%|▊         | 103/1261 [02:04<27:01,  1.40s/it]
  8%|▊         | 104/1261 [02:05<25:12,  1.31s/it]
  8%|▊         | 105/1261 [02:07<28:33,  1.48s/it]
  8%|▊         | 106/1261 [02:09<28:35,  1.49s/it]
  8%|▊         | 107/1261 [02:10<26:21,  1.37s/it]
  9%|▊         | 108/1261 [02:11<25:01,  1.30s/it]
  9%|▊         | 109/1261 [02:12<23:59,  1.25s/it]
  9%|▊         | 110/1261 [02:13<22:56,  1.20s/it]
  9%|▉         | 111/1261 [02:14<21:46,  1.14s/it]
  9%|▉         | 112/1261 [02:15<20:54,  1.09s/it]
  9%|▉         | 113/1261 [02:16<20:22,  1.07s/it]
  9%|▉         | 114/1261 [02:17<20:03,  1.05s/it]
  9%|▉         | 115/1261 [02:18<21:51,  1.14s/it]
  9%|▉         | 116/1261 [02:20<21:23,  1.12s/it]
  9%|▉         | 117/1261 [02:21<21:23,  1.12s/it]
  9%|▉         | 118/1261 [02:22<20:47,  1.09s/it]
  9%|▉         | 119/1261 [02:23<20:39,  1.09s/it]
 10%|▉         | 120/1261 [02:24<21:46,  1.14s/it]
 10%|▉         | 121/1261 [02:25<21:25,  1.13s/it]
 10%|▉         | 122/1261 [02:26<20:38,  1.09s/it]
 10%|▉         | 123/1261 [02:27<20:53,  1.10s/it]
 10%|▉         | 124/1261 [02:28<21:32,  1.14s/it]
 10%|▉         | 125/1261 [02:30<21:44,  1.15s/it]
 10%|▉         | 126/1261 [02:31<21:44,  1.15s/it]
 10%|█         | 127/1261 [02:32<20:59,  1.11s/it]
 10%|█         | 128/1261 [02:33<20:48,  1.10s/it]
 10%|█         | 129/1261 [02:34<20:29,  1.09s/it]
 10%|█         | 130/1261 [02:35<20:02,  1.06s/it]
 10%|█         | 131/1261 [02:36<19:58,  1.06s/it]
 10%|█         | 132/1261 [02:37<19:38,  1.04s/it]
 11%|█         | 133/1261 [02:38<19:19,  1.03s/it]
 11%|█         | 134/1261 [02:39<19:00,  1.01s/it]
 11%|█         | 135/1261 [02:40<19:08,  1.02s/it]
 11%|█         | 136/1261 [02:41<19:05,  1.02s/it]
 11%|█         | 137/1261 [02:42<19:37,  1.05s/it]
 11%|█         | 138/1261 [02:43<19:29,  1.04s/it]
 11%|█         | 139/1261 [02:44<19:21,  1.04s/it]
 11%|█         | 140/1261 [02:45<19:17,  1.03s/it]
 11%|█         | 141/1261 [02:46<19:14,  1.03s/it]
 11%|█▏        | 142/1261 [02:47<19:11,  1.03s/it]
 11%|█▏        | 143/1261 [02:48<18:54,  1.01s/it]
 11%|█▏        | 144/1261 [02:49<18:44,  1.01s/it]
 11%|█▏        | 145/1261 [02:50<18:42,  1.01s/it]
 12%|█▏        | 146/1261 [02:51<18:37,  1.00s/it]
 12%|█▏        | 147/1261 [02:52<18:40,  1.01s/it]
 12%|█▏        | 148/1261 [02:53<18:58,  1.02s/it]
 12%|█▏        | 149/1261 [02:54<19:43,  1.06s/it]
 12%|█▏        | 150/1261 [02:56<20:17,  1.10s/it]
 12%|█▏        | 151/1261 [02:57<20:41,  1.12s/it]
 12%|█▏        | 152/1261 [02:58<20:31,  1.11s/it]
 12%|█▏        | 153/1261 [02:59<20:22,  1.10s/it]
 12%|█▏        | 154/1261 [03:00<20:44,  1.12s/it]
 12%|█▏        | 155/1261 [03:01<20:26,  1.11s/it]
 12%|█▏        | 156/1261 [03:02<19:50,  1.08s/it]
 12%|█▏        | 157/1261 [03:03<19:29,  1.06s/it]
 13%|█▎        | 158/1261 [03:04<19:22,  1.05s/it]
 13%|█▎        | 159/1261 [03:05<19:13,  1.05s/it]
 13%|█▎        | 160/1261 [03:06<18:56,  1.03s/it]
 13%|█▎        | 161/1261 [03:07<18:44,  1.02s/it]
 13%|█▎        | 162/1261 [03:08<18:28,  1.01s/it]
 13%|█▎        | 163/1261 [03:09<18:54,  1.03s/it]
 13%|█▎        | 164/1261 [03:11<20:36,  1.13s/it]
 13%|█▎        | 165/1261 [03:12<21:26,  1.17s/it]
 13%|█▎        | 166/1261 [03:13<21:27,  1.18s/it]
 13%|█▎        | 167/1261 [03:14<20:33,  1.13s/it]
 13%|█▎        | 168/1261 [03:15<19:46,  1.09s/it]
 13%|█▎        | 169/1261 [03:16<19:11,  1.05s/it]
 13%|█▎        | 170/1261 [03:17<19:05,  1.05s/it]
 14%|█▎        | 171/1261 [03:18<19:07,  1.05s/it]
 14%|█▎        | 172/1261 [03:19<18:55,  1.04s/it]
 14%|█▎        | 173/1261 [03:20<18:40,  1.03s/it]
 14%|█▍        | 174/1261 [03:21<18:37,  1.03s/it]
 14%|█▍        | 175/1261 [03:22<18:22,  1.02s/it]
 14%|█▍        | 176/1261 [03:23<18:13,  1.01s/it]
 14%|█▍        | 177/1261 [03:24<18:11,  1.01s/it]
 14%|█▍        | 178/1261 [03:25<18:04,  1.00s/it]
 14%|█▍        | 179/1261 [03:26<17:59,  1.00it/s]
 14%|█▍        | 180/1261 [03:27<18:38,  1.03s/it]
 14%|█▍        | 181/1261 [03:28<18:59,  1.06s/it]
 14%|█▍        | 182/1261 [03:30<19:19,  1.07s/it]
 15%|█▍        | 183/1261 [03:31<19:00,  1.06s/it]
 15%|█▍        | 184/1261 [03:32<18:37,  1.04s/it]
 15%|█▍        | 185/1261 [03:33<18:18,  1.02s/it]
 15%|█▍        | 186/1261 [03:34<18:24,  1.03s/it]
 15%|█▍        | 187/1261 [03:35<18:23,  1.03s/it]
 15%|█▍        | 188/1261 [03:36<18:30,  1.03s/it]
 15%|█▍        | 189/1261 [03:37<18:11,  1.02s/it]
 15%|█▌        | 190/1261 [03:38<17:52,  1.00s/it]
 15%|█▌        | 191/1261 [03:39<17:40,  1.01it/s]
 15%|█▌        | 192/1261 [03:40<17:38,  1.01it/s]
 15%|█▌        | 193/1261 [03:41<17:32,  1.01it/s]
 15%|█▌        | 194/1261 [03:42<17:27,  1.02it/s]
 15%|█▌        | 195/1261 [03:43<17:23,  1.02it/s]
 16%|█▌        | 196/1261 [03:44<17:28,  1.02it/s]
 16%|█▌        | 197/1261 [03:45<17:25,  1.02it/s]
 16%|█▌        | 198/1261 [03:45<17:20,  1.02it/s]
 16%|█▌        | 199/1261 [03:46<17:16,  1.02it/s]
 16%|█▌        | 200/1261 [03:47<17:19,  1.02it/s]
 16%|█▌        | 201/1261 [03:48<17:16,  1.02it/s]
 16%|█▌        | 202/1261 [03:50<18:22,  1.04s/it]
 16%|█▌        | 203/1261 [03:51<22:24,  1.27s/it]
 16%|█▌        | 204/1261 [03:53<24:10,  1.37s/it]
 16%|█▋        | 205/1261 [03:54<23:42,  1.35s/it]
 16%|█▋        | 206/1261 [03:56<24:53,  1.42s/it]
 16%|█▋        | 207/1261 [03:57<24:22,  1.39s/it]
 16%|█▋        | 208/1261 [03:58<22:46,  1.30s/it]
 17%|█▋        | 209/1261 [03:59<22:02,  1.26s/it]
 17%|█▋        | 210/1261 [04:01<23:35,  1.35s/it]
 17%|█▋        | 211/1261 [04:03<29:22,  1.68s/it]
 17%|█▋        | 212/1261 [04:06<33:51,  1.94s/it]
 17%|█▋        | 213/1261 [04:08<32:30,  1.86s/it]
 17%|█▋        | 214/1261 [04:09<29:57,  1.72s/it]
 17%|█▋        | 215/1261 [04:11<29:17,  1.68s/it]
 17%|█▋        | 216/1261 [04:12<29:59,  1.72s/it]
 17%|█▋        | 217/1261 [04:14<26:32,  1.53s/it]
 17%|█▋        | 218/1261 [04:15<23:48,  1.37s/it]
 17%|█▋        | 219/1261 [04:16<21:52,  1.26s/it]
 17%|█▋        | 220/1261 [04:17<20:28,  1.18s/it]
 18%|█▊        | 221/1261 [04:18<19:27,  1.12s/it]
 18%|█▊        | 222/1261 [04:19<18:46,  1.08s/it]
 18%|█▊        | 223/1261 [04:20<18:09,  1.05s/it]
 18%|█▊        | 224/1261 [04:21<17:49,  1.03s/it]
 18%|█▊        | 225/1261 [04:22<18:09,  1.05s/it]
 18%|█▊        | 226/1261 [04:23<18:38,  1.08s/it]
 18%|█▊        | 227/1261 [04:25<23:19,  1.35s/it]
 18%|█▊        | 228/1261 [04:26<22:23,  1.30s/it]
 18%|█▊        | 229/1261 [04:27<20:46,  1.21s/it]
 18%|█▊        | 230/1261 [04:28<19:35,  1.14s/it]
 18%|█▊        | 231/1261 [04:29<18:41,  1.09s/it]
 18%|█▊        | 232/1261 [04:30<18:07,  1.06s/it]
 18%|█▊        | 233/1261 [04:31<17:46,  1.04s/it]
 19%|█▊        | 234/1261 [04:32<17:32,  1.02s/it]
 19%|█▊        | 235/1261 [04:33<20:48,  1.22s/it]
 19%|█▊        | 236/1261 [04:35<24:14,  1.42s/it]
 19%|█▉        | 237/1261 [04:37<25:03,  1.47s/it]
 19%|█▉        | 238/1261 [04:38<24:19,  1.43s/it]
 19%|█▉        | 239/1261 [04:40<24:34,  1.44s/it]
 19%|█▉        | 240/1261 [04:42<26:06,  1.53s/it]
 19%|█▉        | 241/1261 [04:43<27:13,  1.60s/it]
 19%|█▉        | 242/1261 [04:45<26:55,  1.59s/it]
 19%|█▉        | 243/1261 [04:46<24:39,  1.45s/it]
 19%|█▉        | 244/1261 [04:47<22:17,  1.32s/it]
 19%|█▉        | 245/1261 [04:48<21:14,  1.25s/it]
 20%|█▉        | 246/1261 [04:49<20:26,  1.21s/it]
 20%|█▉        | 247/1261 [04:50<19:17,  1.14s/it]
 20%|█▉        | 248/1261 [04:51<19:34,  1.16s/it]
 20%|█▉        | 249/1261 [04:52<18:35,  1.10s/it]
 20%|█▉        | 250/1261 [04:53<17:56,  1.07s/it]
 20%|█▉        | 251/1261 [04:54<17:54,  1.06s/it]
 20%|█▉        | 252/1261 [04:56<18:40,  1.11s/it]
 20%|██        | 253/1261 [04:57<21:34,  1.28s/it]
 20%|██        | 254/1261 [04:58<20:36,  1.23s/it]
 20%|██        | 255/1261 [05:00<21:26,  1.28s/it]
 20%|██        | 256/1261 [05:01<20:40,  1.23s/it]
 20%|██        | 257/1261 [05:02<20:10,  1.21s/it]
 20%|██        | 258/1261 [05:03<19:33,  1.17s/it]
 21%|██        | 259/1261 [05:04<19:28,  1.17s/it]
 21%|██        | 260/1261 [05:06<21:03,  1.26s/it]
 21%|██        | 261/1261 [05:07<20:20,  1.22s/it]
 21%|██        | 262/1261 [05:08<19:22,  1.16s/it]
 21%|██        | 263/1261 [05:09<19:09,  1.15s/it]
 21%|██        | 264/1261 [05:10<20:08,  1.21s/it]
 21%|██        | 265/1261 [05:11<19:09,  1.15s/it]
 21%|██        | 266/1261 [05:13<19:40,  1.19s/it]
 21%|██        | 267/1261 [05:14<21:58,  1.33s/it]
 21%|██▏       | 268/1261 [05:16<21:51,  1.32s/it]
 21%|██▏       | 269/1261 [05:17<20:36,  1.25s/it]
 21%|██▏       | 270/1261 [05:18<19:30,  1.18s/it]
 21%|██▏       | 271/1261 [05:19<18:47,  1.14s/it]
 22%|██▏       | 272/1261 [05:20<18:57,  1.15s/it]
 22%|██▏       | 273/1261 [05:21<20:03,  1.22s/it]
 22%|██▏       | 274/1261 [05:23<20:31,  1.25s/it]
 22%|██▏       | 275/1261 [05:24<20:02,  1.22s/it]
 22%|██▏       | 276/1261 [05:25<19:08,  1.17s/it]
 22%|██▏       | 277/1261 [05:26<18:10,  1.11s/it]
 22%|██▏       | 278/1261 [05:27<19:40,  1.20s/it]
 22%|██▏       | 279/1261 [05:29<21:47,  1.33s/it]
 22%|██▏       | 280/1261 [05:30<20:25,  1.25s/it]
 22%|██▏       | 281/1261 [05:31<20:31,  1.26s/it]
 22%|██▏       | 282/1261 [05:32<19:05,  1.17s/it]
 22%|██▏       | 283/1261 [05:33<19:13,  1.18s/it]
 23%|██▎       | 284/1261 [05:35<20:17,  1.25s/it]
 23%|██▎       | 285/1261 [05:36<18:56,  1.16s/it]
 23%|██▎       | 286/1261 [05:37<18:27,  1.14s/it]
 23%|██▎       | 287/1261 [05:38<19:28,  1.20s/it]
 23%|██▎       | 288/1261 [05:40<20:31,  1.27s/it]
 23%|██▎       | 289/1261 [05:41<21:03,  1.30s/it]
 23%|██▎       | 290/1261 [05:42<21:19,  1.32s/it]
 23%|██▎       | 291/1261 [05:44<20:53,  1.29s/it]
 23%|██▎       | 292/1261 [05:45<19:53,  1.23s/it]
 23%|██▎       | 293/1261 [05:46<18:45,  1.16s/it]
 23%|██▎       | 294/1261 [05:47<17:52,  1.11s/it]
 23%|██▎       | 295/1261 [05:48<17:23,  1.08s/it]
 23%|██▎       | 296/1261 [05:49<17:06,  1.06s/it]
 24%|██▎       | 297/1261 [05:50<16:39,  1.04s/it]
 24%|██▎       | 298/1261 [05:51<16:24,  1.02s/it]
 24%|██▎       | 299/1261 [05:52<16:08,  1.01s/it]
 24%|██▍       | 300/1261 [05:53<15:57,  1.00it/s]
 24%|██▍       | 301/1261 [05:54<15:50,  1.01it/s]
 24%|██▍       | 302/1261 [05:55<15:51,  1.01it/s]
 24%|██▍       | 303/1261 [05:56<17:23,  1.09s/it]
 24%|██▍       | 304/1261 [05:57<17:13,  1.08s/it]
 24%|██▍       | 305/1261 [05:58<17:20,  1.09s/it]
 24%|██▍       | 306/1261 [06:00<19:06,  1.20s/it]
 24%|██▍       | 307/1261 [06:01<18:06,  1.14s/it]
 24%|██▍       | 308/1261 [06:01<17:19,  1.09s/it]
 25%|██▍       | 309/1261 [06:02<16:50,  1.06s/it]
 25%|██▍       | 310/1261 [06:03<16:33,  1.04s/it]
 25%|██▍       | 311/1261 [06:04<16:16,  1.03s/it]
 25%|██▍       | 312/1261 [06:05<16:05,  1.02s/it]
 25%|██▍       | 313/1261 [06:06<15:54,  1.01s/it]
 25%|██▍       | 314/1261 [06:07<15:49,  1.00s/it]
 25%|██▍       | 315/1261 [06:08<15:46,  1.00s/it]
 25%|██▌       | 316/1261 [06:10<17:07,  1.09s/it]
 25%|██▌       | 317/1261 [06:11<18:44,  1.19s/it]
 25%|██▌       | 318/1261 [06:12<17:59,  1.15s/it]
 25%|██▌       | 319/1261 [06:13<17:41,  1.13s/it]
 25%|██▌       | 320/1261 [06:14<18:02,  1.15s/it]
 25%|██▌       | 321/1261 [06:15<17:11,  1.10s/it]
 26%|██▌       | 322/1261 [06:16<16:40,  1.07s/it]
 26%|██▌       | 323/1261 [06:17<16:14,  1.04s/it]
 26%|██▌       | 324/1261 [06:18<16:08,  1.03s/it]
 26%|██▌       | 325/1261 [06:20<17:54,  1.15s/it]
 26%|██▌       | 326/1261 [06:21<18:25,  1.18s/it]
 26%|██▌       | 327/1261 [06:22<17:58,  1.15s/it]
 26%|██▌       | 328/1261 [06:23<17:57,  1.15s/it]
 26%|██▌       | 329/1261 [06:25<17:51,  1.15s/it]
 26%|██▌       | 330/1261 [06:26<17:28,  1.13s/it]
 26%|██▌       | 331/1261 [06:27<17:48,  1.15s/it]
 26%|██▋       | 332/1261 [06:28<17:22,  1.12s/it]
 26%|██▋       | 333/1261 [06:29<17:19,  1.12s/it]
 26%|██▋       | 334/1261 [06:30<19:02,  1.23s/it]
 27%|██▋       | 335/1261 [06:32<19:35,  1.27s/it]
 27%|██▋       | 336/1261 [06:33<18:21,  1.19s/it]
 27%|██▋       | 337/1261 [06:34<19:40,  1.28s/it]
 27%|██▋       | 338/1261 [06:35<18:26,  1.20s/it]
 27%|██▋       | 339/1261 [06:36<17:29,  1.14s/it]
 27%|██▋       | 340/1261 [06:37<16:50,  1.10s/it]
 27%|██▋       | 341/1261 [06:38<16:27,  1.07s/it]
 27%|██▋       | 342/1261 [06:39<16:09,  1.06s/it]
 27%|██▋       | 343/1261 [06:40<15:46,  1.03s/it]
 27%|██▋       | 344/1261 [06:41<15:41,  1.03s/it]
 27%|██▋       | 345/1261 [06:42<15:30,  1.02s/it]
 27%|██▋       | 346/1261 [06:44<16:31,  1.08s/it]
 28%|██▊       | 347/1261 [06:45<18:02,  1.18s/it]
 28%|██▊       | 348/1261 [06:47<19:38,  1.29s/it]
 28%|██▊       | 349/1261 [06:48<18:14,  1.20s/it]
 28%|██▊       | 350/1261 [06:49<17:34,  1.16s/it]
 28%|██▊       | 351/1261 [06:50<19:43,  1.30s/it]
 28%|██▊       | 352/1261 [06:51<19:20,  1.28s/it]
 28%|██▊       | 353/1261 [06:53<18:35,  1.23s/it]
 28%|██▊       | 354/1261 [06:54<18:38,  1.23s/it]
 28%|██▊       | 355/1261 [06:55<19:04,  1.26s/it]
 28%|██▊       | 356/1261 [06:56<19:01,  1.26s/it]
 28%|██▊       | 357/1261 [06:57<17:49,  1.18s/it]
 28%|██▊       | 358/1261 [06:58<17:28,  1.16s/it]
 28%|██▊       | 359/1261 [07:00<17:43,  1.18s/it]
 29%|██▊       | 360/1261 [07:01<16:57,  1.13s/it]
 29%|██▊       | 361/1261 [07:02<16:17,  1.09s/it]
 29%|██▊       | 362/1261 [07:03<15:58,  1.07s/it]
 29%|██▉       | 363/1261 [07:04<15:39,  1.05s/it]
 29%|██▉       | 364/1261 [07:05<17:08,  1.15s/it]
 29%|██▉       | 365/1261 [07:06<17:37,  1.18s/it]
 29%|██▉       | 366/1261 [07:08<18:19,  1.23s/it]
 29%|██▉       | 367/1261 [07:09<17:56,  1.20s/it]
 29%|██▉       | 368/1261 [07:10<17:32,  1.18s/it]
 29%|██▉       | 369/1261 [07:12<20:34,  1.38s/it]
 29%|██▉       | 370/1261 [07:13<21:26,  1.44s/it]
 29%|██▉       | 371/1261 [07:15<20:34,  1.39s/it]
 30%|██▉       | 372/1261 [07:16<20:15,  1.37s/it]
 30%|██▉       | 373/1261 [07:17<18:49,  1.27s/it]
 30%|██▉       | 374/1261 [07:18<18:42,  1.27s/it]
 30%|██▉       | 375/1261 [07:20<18:59,  1.29s/it]
 30%|██▉       | 376/1261 [07:21<18:27,  1.25s/it]
 30%|██▉       | 377/1261 [07:22<17:43,  1.20s/it]
 30%|██▉       | 378/1261 [07:23<17:19,  1.18s/it]
 30%|███       | 379/1261 [07:25<19:07,  1.30s/it]
 30%|███       | 380/1261 [07:26<19:00,  1.29s/it]
 30%|███       | 381/1261 [07:27<18:29,  1.26s/it]
 30%|███       | 382/1261 [07:28<18:06,  1.24s/it]
 30%|███       | 383/1261 [07:29<17:14,  1.18s/it]
 30%|███       | 384/1261 [07:31<17:46,  1.22s/it]
 31%|███       | 385/1261 [07:32<17:38,  1.21s/it]
 31%|███       | 386/1261 [07:33<18:06,  1.24s/it]
 31%|███       | 387/1261 [07:34<17:10,  1.18s/it]
 31%|███       | 388/1261 [07:35<17:24,  1.20s/it]
 31%|███       | 389/1261 [07:37<18:03,  1.24s/it]
 31%|███       | 390/1261 [07:38<17:32,  1.21s/it]
 31%|███       | 391/1261 [07:39<17:07,  1.18s/it]
 31%|███       | 392/1261 [07:40<16:19,  1.13s/it]
 31%|███       | 393/1261 [07:41<15:40,  1.08s/it]
 31%|███       | 394/1261 [07:42<15:20,  1.06s/it]
 31%|███▏      | 395/1261 [07:43<14:56,  1.03s/it]
 31%|███▏      | 396/1261 [07:44<15:01,  1.04s/it]
 31%|███▏      | 397/1261 [07:45<14:40,  1.02s/it]
 32%|███▏      | 398/1261 [07:46<14:33,  1.01s/it]
 32%|███▏      | 399/1261 [07:47<14:26,  1.01s/it]
 32%|███▏      | 400/1261 [07:48<14:19,  1.00it/s]
 32%|███▏      | 401/1261 [07:49<14:15,  1.01it/s]
 32%|███▏      | 402/1261 [07:50<14:13,  1.01it/s]
 32%|███▏      | 403/1261 [07:51<14:06,  1.01it/s]
 32%|███▏      | 404/1261 [07:52<14:04,  1.02it/s]
 32%|███▏      | 405/1261 [07:53<13:58,  1.02it/s]
 32%|███▏      | 406/1261 [07:54<14:19,  1.01s/it]
 32%|███▏      | 407/1261 [07:55<14:24,  1.01s/it]
 32%|███▏      | 408/1261 [07:56<14:34,  1.03s/it]
 32%|███▏      | 409/1261 [07:58<17:20,  1.22s/it]
 33%|███▎      | 410/1261 [07:59<17:24,  1.23s/it]
 33%|███▎      | 411/1261 [08:00<16:45,  1.18s/it]
 33%|███▎      | 412/1261 [08:01<16:17,  1.15s/it]
 33%|███▎      | 413/1261 [08:02<15:37,  1.11s/it]
 33%|███▎      | 414/1261 [08:03<15:09,  1.07s/it]
 33%|███▎      | 415/1261 [08:04<14:48,  1.05s/it]
 33%|███▎      | 416/1261 [08:06<17:45,  1.26s/it]
 33%|███▎      | 417/1261 [08:07<16:38,  1.18s/it]
 33%|███▎      | 418/1261 [08:08<16:13,  1.15s/it]
 33%|███▎      | 419/1261 [08:09<17:19,  1.23s/it]
 33%|███▎      | 420/1261 [08:11<18:09,  1.30s/it]
 33%|███▎      | 421/1261 [08:12<17:51,  1.28s/it]
 33%|███▎      | 422/1261 [08:13<17:21,  1.24s/it]
 34%|███▎      | 423/1261 [08:14<16:53,  1.21s/it]
 34%|███▎      | 424/1261 [08:15<16:23,  1.18s/it]
 34%|███▎      | 425/1261 [08:16<15:37,  1.12s/it]
 34%|███▍      | 426/1261 [08:17<15:05,  1.08s/it]
 34%|███▍      | 427/1261 [08:18<15:01,  1.08s/it]
 34%|███▍      | 428/1261 [08:19<14:49,  1.07s/it]
 34%|███▍      | 429/1261 [08:20<14:36,  1.05s/it]
 34%|███▍      | 430/1261 [08:21<14:15,  1.03s/it]
 34%|███▍      | 431/1261 [08:22<14:06,  1.02s/it]
 34%|███▍      | 432/1261 [08:24<14:15,  1.03s/it]
 34%|███▍      | 433/1261 [08:24<14:04,  1.02s/it]
 34%|███▍      | 434/1261 [08:25<13:55,  1.01s/it]
 34%|███▍      | 435/1261 [08:26<13:45,  1.00it/s]
 35%|███▍      | 436/1261 [08:28<14:21,  1.04s/it]
 35%|███▍      | 437/1261 [08:29<14:42,  1.07s/it]
 35%|███▍      | 438/1261 [08:30<15:09,  1.10s/it]
 35%|███▍      | 439/1261 [08:31<15:17,  1.12s/it]
 35%|███▍      | 440/1261 [08:32<14:54,  1.09s/it]
 35%|███▍      | 441/1261 [08:33<14:55,  1.09s/it]
 35%|███▌      | 442/1261 [08:34<14:48,  1.08s/it]
 35%|███▌      | 443/1261 [08:35<14:22,  1.05s/it]
 35%|███▌      | 444/1261 [08:36<14:00,  1.03s/it]
 35%|███▌      | 445/1261 [08:37<13:44,  1.01s/it]
 35%|███▌      | 446/1261 [08:38<13:37,  1.00s/it]
 35%|███▌      | 447/1261 [08:39<13:32,  1.00it/s]
 36%|███▌      | 448/1261 [08:40<13:25,  1.01it/s]
 36%|███▌      | 449/1261 [08:41<13:20,  1.01it/s]
 36%|███▌      | 450/1261 [08:42<13:30,  1.00it/s]
 36%|███▌      | 451/1261 [08:43<13:48,  1.02s/it]
 36%|███▌      | 452/1261 [08:44<13:57,  1.03s/it]
 36%|███▌      | 453/1261 [08:46<14:52,  1.10s/it]
 36%|███▌      | 454/1261 [08:47<15:26,  1.15s/it]
 36%|███▌      | 455/1261 [08:48<15:51,  1.18s/it]
 36%|███▌      | 456/1261 [08:49<15:35,  1.16s/it]
 36%|███▌      | 457/1261 [08:50<15:28,  1.16s/it]
 36%|███▋      | 458/1261 [08:51<15:09,  1.13s/it]
 36%|███▋      | 459/1261 [08:53<15:17,  1.14s/it]
 36%|███▋      | 460/1261 [08:54<15:26,  1.16s/it]
 37%|███▋      | 461/1261 [08:55<15:38,  1.17s/it]
 37%|███▋      | 462/1261 [08:56<15:13,  1.14s/it]
 37%|███▋      | 463/1261 [08:57<15:17,  1.15s/it]
 37%|███▋      | 464/1261 [08:58<14:49,  1.12s/it]
 37%|███▋      | 465/1261 [08:59<14:30,  1.09s/it]
 37%|███▋      | 466/1261 [09:00<14:19,  1.08s/it]
 37%|███▋      | 467/1261 [09:01<13:54,  1.05s/it]
 37%|███▋      | 468/1261 [09:02<13:48,  1.05s/it]
 37%|███▋      | 469/1261 [09:03<13:28,  1.02s/it]
 37%|███▋      | 470/1261 [09:04<13:46,  1.04s/it]
 37%|███▋      | 471/1261 [09:06<14:14,  1.08s/it]
 37%|███▋      | 472/1261 [09:07<13:43,  1.04s/it]
 38%|███▊      | 473/1261 [09:07<13:25,  1.02s/it]
 38%|███▊      | 474/1261 [09:09<13:30,  1.03s/it]
 38%|███▊      | 475/1261 [09:10<13:33,  1.03s/it]
 38%|███▊      | 476/1261 [09:11<13:18,  1.02s/it]
 38%|███▊      | 477/1261 [09:12<13:18,  1.02s/it]
 38%|███▊      | 478/1261 [09:13<13:56,  1.07s/it]
 38%|███▊      | 479/1261 [09:14<14:04,  1.08s/it]
 38%|███▊      | 480/1261 [09:15<14:19,  1.10s/it]
 38%|███▊      | 481/1261 [09:16<14:14,  1.10s/it]
 38%|███▊      | 482/1261 [09:17<14:15,  1.10s/it]
 38%|███▊      | 483/1261 [09:18<13:47,  1.06s/it]
 38%|███▊      | 484/1261 [09:19<13:30,  1.04s/it]
 38%|███▊      | 485/1261 [09:20<13:12,  1.02s/it]
 39%|███▊      | 486/1261 [09:21<12:58,  1.00s/it]
 39%|███▊      | 487/1261 [09:22<12:53,  1.00it/s]
 39%|███▊      | 488/1261 [09:23<12:53,  1.00s/it]
 39%|███▉      | 489/1261 [09:24<12:56,  1.01s/it]
 39%|███▉      | 490/1261 [09:25<12:54,  1.01s/it]
 39%|███▉      | 491/1261 [09:26<12:55,  1.01s/it]
 39%|███▉      | 492/1261 [09:27<13:29,  1.05s/it]
 39%|███▉      | 493/1261 [09:29<15:07,  1.18s/it]
 39%|███▉      | 494/1261 [09:30<15:10,  1.19s/it]
 39%|███▉      | 495/1261 [09:31<15:17,  1.20s/it]
 39%|███▉      | 496/1261 [09:32<15:06,  1.18s/it]
 39%|███▉      | 497/1261 [09:33<14:23,  1.13s/it]
 39%|███▉      | 498/1261 [09:34<14:07,  1.11s/it]
 40%|███▉      | 499/1261 [09:35<13:52,  1.09s/it]
 40%|███▉      | 500/1261 [09:37<13:34,  1.07s/it]
 40%|███▉      | 501/1261 [09:38<13:26,  1.06s/it]
 40%|███▉      | 502/1261 [09:39<13:04,  1.03s/it]
 40%|███▉      | 503/1261 [09:39<12:48,  1.01s/it]
 40%|███▉      | 504/1261 [09:41<12:55,  1.02s/it]
 40%|████      | 505/1261 [09:42<13:00,  1.03s/it]
 40%|████      | 506/1261 [09:43<13:01,  1.03s/it]
 40%|████      | 507/1261 [09:44<14:39,  1.17s/it]
 40%|████      | 508/1261 [09:45<14:56,  1.19s/it]
 40%|████      | 509/1261 [09:46<14:25,  1.15s/it]
 40%|████      | 510/1261 [09:47<14:00,  1.12s/it]
 41%|████      | 511/1261 [09:49<14:17,  1.14s/it]
 41%|████      | 512/1261 [09:51<17:35,  1.41s/it]
 41%|████      | 513/1261 [09:52<17:45,  1.42s/it]
 41%|████      | 514/1261 [09:53<16:50,  1.35s/it]
 41%|████      | 515/1261 [09:54<15:30,  1.25s/it]
 41%|████      | 516/1261 [09:56<15:57,  1.29s/it]
 41%|████      | 517/1261 [09:57<16:59,  1.37s/it]
 41%|████      | 518/1261 [09:58<15:48,  1.28s/it]
 41%|████      | 519/1261 [09:59<14:49,  1.20s/it]
 41%|████      | 520/1261 [10:01<16:21,  1.33s/it]
 41%|████▏     | 521/1261 [10:02<15:01,  1.22s/it]
 41%|████▏     | 522/1261 [10:03<14:18,  1.16s/it]
 41%|████▏     | 523/1261 [10:04<14:37,  1.19s/it]
 42%|████▏     | 524/1261 [10:05<14:06,  1.15s/it]
 42%|████▏     | 525/1261 [10:06<14:22,  1.17s/it]
 42%|████▏     | 526/1261 [10:08<15:40,  1.28s/it]
 42%|████▏     | 527/1261 [10:09<15:21,  1.25s/it]
 42%|████▏     | 528/1261 [10:11<16:56,  1.39s/it]
 42%|████▏     | 529/1261 [10:12<16:59,  1.39s/it]
 42%|████▏     | 530/1261 [10:13<16:08,  1.32s/it]
 42%|████▏     | 531/1261 [10:15<15:14,  1.25s/it]
 42%|████▏     | 532/1261 [10:16<14:39,  1.21s/it]
 42%|████▏     | 533/1261 [10:17<15:05,  1.24s/it]
 42%|████▏     | 534/1261 [10:18<14:07,  1.17s/it]
 42%|████▏     | 535/1261 [10:19<13:26,  1.11s/it]
 43%|████▎     | 536/1261 [10:20<13:00,  1.08s/it]
 43%|████▎     | 537/1261 [10:21<12:40,  1.05s/it]
 43%|████▎     | 538/1261 [10:22<12:29,  1.04s/it]
 43%|████▎     | 539/1261 [10:23<12:17,  1.02s/it]
 43%|████▎     | 540/1261 [10:24<13:17,  1.11s/it]
 43%|████▎     | 541/1261 [10:25<12:51,  1.07s/it]
 43%|████▎     | 542/1261 [10:26<12:30,  1.04s/it]
 43%|████▎     | 543/1261 [10:27<12:20,  1.03s/it]
 43%|████▎     | 544/1261 [10:28<12:17,  1.03s/it]
 43%|████▎     | 545/1261 [10:30<14:01,  1.18s/it]
 43%|████▎     | 546/1261 [10:31<13:59,  1.17s/it]
 43%|████▎     | 547/1261 [10:32<13:44,  1.16s/it]
 43%|████▎     | 548/1261 [10:33<13:39,  1.15s/it]
 44%|████▎     | 549/1261 [10:34<13:37,  1.15s/it]
 44%|████▎     | 550/1261 [10:36<14:27,  1.22s/it]
 44%|████▎     | 551/1261 [10:37<14:10,  1.20s/it]
 44%|████▍     | 552/1261 [10:38<13:34,  1.15s/it]
 44%|████▍     | 553/1261 [10:39<13:11,  1.12s/it]
 44%|████▍     | 554/1261 [10:40<12:53,  1.09s/it]
 44%|████▍     | 555/1261 [10:41<12:39,  1.08s/it]
 44%|████▍     | 556/1261 [10:42<12:39,  1.08s/it]
 44%|████▍     | 557/1261 [10:43<12:25,  1.06s/it]
 44%|████▍     | 558/1261 [10:44<12:10,  1.04s/it]
 44%|████▍     | 559/1261 [10:46<13:54,  1.19s/it]
 44%|████▍     | 560/1261 [10:48<18:19,  1.57s/it]
 44%|████▍     | 561/1261 [10:49<16:46,  1.44s/it]
 45%|████▍     | 562/1261 [10:50<15:08,  1.30s/it]
 45%|████▍     | 563/1261 [10:51<13:58,  1.20s/it]
 45%|████▍     | 564/1261 [10:52<13:15,  1.14s/it]
 45%|████▍     | 565/1261 [10:53<12:47,  1.10s/it]
 45%|████▍     | 566/1261 [10:54<12:23,  1.07s/it]
 45%|████▍     | 567/1261 [10:56<13:21,  1.15s/it]
 45%|████▌     | 568/1261 [10:57<14:01,  1.21s/it]
 45%|████▌     | 569/1261 [10:58<13:20,  1.16s/it]
 45%|████▌     | 570/1261 [10:59<12:57,  1.12s/it]
 45%|████▌     | 571/1261 [11:01<14:21,  1.25s/it]
 45%|████▌     | 572/1261 [11:02<14:22,  1.25s/it]
 45%|████▌     | 573/1261 [11:03<15:28,  1.35s/it]
 46%|████▌     | 574/1261 [11:04<14:29,  1.27s/it]
 46%|████▌     | 575/1261 [11:05<13:36,  1.19s/it]
 46%|████▌     | 576/1261 [11:06<13:01,  1.14s/it]
 46%|████▌     | 577/1261 [11:08<13:11,  1.16s/it]
 46%|████▌     | 578/1261 [11:09<12:52,  1.13s/it]
 46%|████▌     | 579/1261 [11:10<12:30,  1.10s/it]
 46%|████▌     | 580/1261 [11:11<12:07,  1.07s/it]
 46%|████▌     | 581/1261 [11:12<11:49,  1.04s/it]
 46%|████▌     | 582/1261 [11:13<11:37,  1.03s/it]
 46%|████▌     | 583/1261 [11:14<11:27,  1.01s/it]
 46%|████▋     | 584/1261 [11:15<12:54,  1.14s/it]
 46%|████▋     | 585/1261 [11:16<12:51,  1.14s/it]
 46%|████▋     | 586/1261 [11:17<12:46,  1.13s/it]
 47%|████▋     | 587/1261 [11:19<12:37,  1.12s/it]
 47%|████▋     | 588/1261 [11:20<12:12,  1.09s/it]
 47%|████▋     | 589/1261 [11:20<11:50,  1.06s/it]
 47%|████▋     | 590/1261 [11:21<11:36,  1.04s/it]
 47%|████▋     | 591/1261 [11:22<11:25,  1.02s/it]
 47%|████▋     | 592/1261 [11:23<11:19,  1.02s/it]
 47%|████▋     | 593/1261 [11:24<11:11,  1.00s/it]
 47%|████▋     | 594/1261 [11:25<11:05,  1.00it/s]
 47%|████▋     | 595/1261 [11:27<13:40,  1.23s/it]
 47%|████▋     | 596/1261 [11:29<14:28,  1.31s/it]
 47%|████▋     | 597/1261 [11:30<16:06,  1.45s/it]
 47%|████▋     | 598/1261 [11:32<14:56,  1.35s/it]
 48%|████▊     | 599/1261 [11:33<15:08,  1.37s/it]
 48%|████▊     | 600/1261 [11:34<14:18,  1.30s/it]
 48%|████▊     | 601/1261 [11:36<14:54,  1.36s/it]
 48%|████▊     | 602/1261 [11:37<14:21,  1.31s/it]
 48%|████▊     | 603/1261 [11:38<13:31,  1.23s/it]
 48%|████▊     | 604/1261 [11:39<12:42,  1.16s/it]
 48%|████▊     | 605/1261 [11:40<12:31,  1.15s/it]
 48%|████▊     | 606/1261 [11:41<12:24,  1.14s/it]
 48%|████▊     | 607/1261 [11:42<12:52,  1.18s/it]
 48%|████▊     | 608/1261 [11:44<13:02,  1.20s/it]
 48%|████▊     | 609/1261 [11:45<13:18,  1.22s/it]
 48%|████▊     | 610/1261 [11:47<14:57,  1.38s/it]
 48%|████▊     | 611/1261 [11:48<15:31,  1.43s/it]
 49%|████▊     | 612/1261 [11:49<13:57,  1.29s/it]
 49%|████▊     | 613/1261 [11:50<12:54,  1.20s/it]
 49%|████▊     | 614/1261 [11:51<12:11,  1.13s/it]
 49%|████▉     | 615/1261 [11:52<11:51,  1.10s/it]
 49%|████▉     | 616/1261 [11:53<12:15,  1.14s/it]
 49%|████▉     | 617/1261 [11:54<12:04,  1.12s/it]
 49%|████▉     | 618/1261 [11:56<12:42,  1.19s/it]
 49%|████▉     | 619/1261 [11:57<12:43,  1.19s/it]
 49%|████▉     | 620/1261 [11:58<12:15,  1.15s/it]
 49%|████▉     | 621/1261 [11:59<12:11,  1.14s/it]
 49%|████▉     | 622/1261 [12:01<13:39,  1.28s/it]
 49%|████▉     | 623/1261 [12:02<13:08,  1.24s/it]
 49%|████▉     | 624/1261 [12:04<15:27,  1.46s/it]
 50%|████▉     | 625/1261 [12:05<15:43,  1.48s/it]
 50%|████▉     | 626/1261 [12:07<14:33,  1.38s/it]
 50%|████▉     | 627/1261 [12:08<16:00,  1.51s/it]
 50%|████▉     | 628/1261 [12:09<14:37,  1.39s/it]
 50%|████▉     | 629/1261 [12:11<14:43,  1.40s/it]
 50%|████▉     | 630/1261 [12:12<14:06,  1.34s/it]
 50%|█████     | 631/1261 [12:13<13:50,  1.32s/it]
 50%|█████     | 632/1261 [12:15<13:44,  1.31s/it]
 50%|█████     | 633/1261 [12:16<12:50,  1.23s/it]
 50%|█████     | 634/1261 [12:17<12:16,  1.18s/it]
 50%|█████     | 635/1261 [12:18<11:53,  1.14s/it]
 50%|█████     | 636/1261 [12:19<11:38,  1.12s/it]
 51%|█████     | 637/1261 [12:20<11:24,  1.10s/it]
 51%|█████     | 638/1261 [12:21<11:14,  1.08s/it]
 51%|█████     | 639/1261 [12:22<11:04,  1.07s/it]
 51%|█████     | 640/1261 [12:23<10:50,  1.05s/it]
 51%|█████     | 641/1261 [12:24<11:42,  1.13s/it]
 51%|█████     | 642/1261 [12:26<12:17,  1.19s/it]
 51%|█████     | 643/1261 [12:27<12:54,  1.25s/it]
 51%|█████     | 644/1261 [12:29<14:48,  1.44s/it]
 51%|█████     | 645/1261 [12:30<13:54,  1.36s/it]
 51%|█████     | 646/1261 [12:31<12:48,  1.25s/it]
 51%|█████▏    | 647/1261 [12:32<12:10,  1.19s/it]
 51%|█████▏    | 648/1261 [12:33<12:29,  1.22s/it]
 51%|█████▏    | 649/1261 [12:35<12:53,  1.26s/it]
 52%|█████▏    | 650/1261 [12:36<13:39,  1.34s/it]
 52%|█████▏    | 651/1261 [12:37<12:54,  1.27s/it]
 52%|█████▏    | 652/1261 [12:39<12:24,  1.22s/it]
 52%|█████▏    | 653/1261 [12:40<11:52,  1.17s/it]
 52%|█████▏    | 654/1261 [12:41<11:35,  1.15s/it]
 52%|█████▏    | 655/1261 [12:42<12:51,  1.27s/it]
 52%|█████▏    | 656/1261 [12:43<12:37,  1.25s/it]
 52%|█████▏    | 657/1261 [12:45<14:50,  1.47s/it]
 52%|█████▏    | 658/1261 [12:47<14:58,  1.49s/it]
 52%|█████▏    | 659/1261 [12:48<13:43,  1.37s/it]
 52%|█████▏    | 660/1261 [12:49<12:48,  1.28s/it]
 52%|█████▏    | 661/1261 [12:50<12:39,  1.27s/it]
 52%|█████▏    | 662/1261 [12:52<12:20,  1.24s/it]
 53%|█████▎    | 663/1261 [12:53<11:49,  1.19s/it]
 53%|█████▎    | 664/1261 [12:54<11:39,  1.17s/it]
 53%|█████▎    | 665/1261 [12:55<11:25,  1.15s/it]
 53%|█████▎    | 666/1261 [12:56<11:35,  1.17s/it]
 53%|█████▎    | 667/1261 [12:57<11:41,  1.18s/it]
 53%|█████▎    | 668/1261 [12:59<11:57,  1.21s/it]
 53%|█████▎    | 669/1261 [13:00<12:55,  1.31s/it]
 53%|█████▎    | 670/1261 [13:01<12:32,  1.27s/it]
 53%|█████▎    | 671/1261 [13:02<11:36,  1.18s/it]
 53%|█████▎    | 672/1261 [13:04<11:47,  1.20s/it]
 53%|█████▎    | 673/1261 [13:05<11:15,  1.15s/it]
 53%|█████▎    | 674/1261 [13:06<10:52,  1.11s/it]
 54%|█████▎    | 675/1261 [13:07<10:46,  1.10s/it]
 54%|█████▎    | 676/1261 [13:08<10:29,  1.08s/it]
 54%|█████▎    | 677/1261 [13:09<10:49,  1.11s/it]
 54%|█████▍    | 678/1261 [13:10<10:28,  1.08s/it]
 54%|█████▍    | 679/1261 [13:11<10:17,  1.06s/it]
 54%|█████▍    | 680/1261 [13:12<10:16,  1.06s/it]
 54%|█████▍    | 681/1261 [13:13<10:05,  1.04s/it]
 54%|█████▍    | 682/1261 [13:14<10:28,  1.09s/it]
 54%|█████▍    | 683/1261 [13:15<10:39,  1.11s/it]
 54%|█████▍    | 684/1261 [13:16<10:55,  1.14s/it]
 54%|█████▍    | 685/1261 [13:18<11:42,  1.22s/it]
 54%|█████▍    | 686/1261 [13:19<11:57,  1.25s/it]
 54%|█████▍    | 687/1261 [13:20<11:56,  1.25s/it]
 55%|█████▍    | 688/1261 [13:22<12:21,  1.29s/it]
 55%|█████▍    | 689/1261 [13:23<12:00,  1.26s/it]
 55%|█████▍    | 690/1261 [13:24<12:28,  1.31s/it]
 55%|█████▍    | 691/1261 [13:26<12:43,  1.34s/it]
 55%|█████▍    | 692/1261 [13:27<12:23,  1.31s/it]
 55%|█████▍    | 693/1261 [13:28<12:29,  1.32s/it]
 55%|█████▌    | 694/1261 [13:30<12:09,  1.29s/it]
 55%|█████▌    | 695/1261 [13:31<11:49,  1.25s/it]
 55%|█████▌    | 696/1261 [13:32<11:34,  1.23s/it]
 55%|█████▌    | 697/1261 [13:33<11:22,  1.21s/it]
 55%|█████▌    | 698/1261 [13:35<12:24,  1.32s/it]
 55%|█████▌    | 699/1261 [13:36<12:49,  1.37s/it]
 56%|█████▌    | 700/1261 [13:38<13:27,  1.44s/it]
 56%|█████▌    | 701/1261 [13:39<12:49,  1.37s/it]
 56%|█████▌    | 702/1261 [13:40<12:10,  1.31s/it]
 56%|█████▌    | 703/1261 [13:41<11:31,  1.24s/it]
 56%|█████▌    | 704/1261 [13:43<11:58,  1.29s/it]
 56%|█████▌    | 705/1261 [13:44<11:43,  1.27s/it]
 56%|█████▌    | 706/1261 [13:45<11:08,  1.20s/it]
 56%|█████▌    | 707/1261 [13:46<10:57,  1.19s/it]
 56%|█████▌    | 708/1261 [13:47<10:48,  1.17s/it]
 56%|█████▌    | 709/1261 [13:48<10:24,  1.13s/it]
 56%|█████▋    | 710/1261 [13:49<10:24,  1.13s/it]
 56%|█████▋    | 711/1261 [13:51<10:19,  1.13s/it]
 56%|█████▋    | 712/1261 [13:52<10:20,  1.13s/it]
 57%|█████▋    | 713/1261 [13:53<10:30,  1.15s/it]
 57%|█████▋    | 714/1261 [13:54<10:14,  1.12s/it]
 57%|█████▋    | 715/1261 [13:55<10:00,  1.10s/it]
 57%|█████▋    | 716/1261 [13:57<11:15,  1.24s/it]
 57%|█████▋    | 717/1261 [13:58<13:04,  1.44s/it]
 57%|█████▋    | 718/1261 [14:00<12:11,  1.35s/it]
 57%|█████▋    | 719/1261 [14:01<12:49,  1.42s/it]
 57%|█████▋    | 720/1261 [14:02<11:59,  1.33s/it]
 57%|█████▋    | 721/1261 [14:04<11:40,  1.30s/it]
 57%|█████▋    | 722/1261 [14:05<11:52,  1.32s/it]
 57%|█████▋    | 723/1261 [14:06<11:20,  1.26s/it]
 57%|█████▋    | 724/1261 [14:07<11:23,  1.27s/it]
 57%|█████▋    | 725/1261 [14:08<11:01,  1.23s/it]
 58%|█████▊    | 726/1261 [14:10<11:03,  1.24s/it]
 58%|█████▊    | 727/1261 [14:11<11:18,  1.27s/it]
 58%|█████▊    | 728/1261 [14:12<11:19,  1.28s/it]
 58%|█████▊    | 729/1261 [14:13<10:42,  1.21s/it]
 58%|█████▊    | 730/1261 [14:15<11:27,  1.29s/it]
 58%|█████▊    | 731/1261 [14:17<13:41,  1.55s/it]
 58%|█████▊    | 732/1261 [14:18<13:23,  1.52s/it]
 58%|█████▊    | 733/1261 [14:19<12:02,  1.37s/it]
 58%|█████▊    | 734/1261 [14:21<11:06,  1.26s/it]
 58%|█████▊    | 735/1261 [14:22<10:27,  1.19s/it]
 58%|█████▊    | 736/1261 [14:23<09:55,  1.13s/it]
 58%|█████▊    | 737/1261 [14:24<09:35,  1.10s/it]
 59%|█████▊    | 738/1261 [14:25<09:22,  1.08s/it]
 59%|█████▊    | 739/1261 [14:26<09:22,  1.08s/it]
 59%|█████▊    | 740/1261 [14:27<09:14,  1.07s/it]
 59%|█████▉    | 741/1261 [14:28<09:04,  1.05s/it]
 59%|█████▉    | 742/1261 [14:29<09:07,  1.06s/it]
 59%|█████▉    | 743/1261 [14:30<10:08,  1.17s/it]
 59%|█████▉    | 744/1261 [14:32<10:42,  1.24s/it]
 59%|█████▉    | 745/1261 [14:33<10:56,  1.27s/it]
 59%|█████▉    | 746/1261 [14:34<10:49,  1.26s/it]
 59%|█████▉    | 747/1261 [14:36<10:54,  1.27s/it]
 59%|█████▉    | 748/1261 [14:37<10:22,  1.21s/it]
 59%|█████▉    | 749/1261 [14:38<10:19,  1.21s/it]
 59%|█████▉    | 750/1261 [14:39<10:18,  1.21s/it]
 60%|█████▉    | 751/1261 [14:40<10:17,  1.21s/it]
 60%|█████▉    | 752/1261 [14:42<10:35,  1.25s/it]
 60%|█████▉    | 753/1261 [14:44<12:59,  1.53s/it]
 60%|█████▉    | 754/1261 [14:45<12:18,  1.46s/it]
 60%|█████▉    | 755/1261 [14:46<12:08,  1.44s/it]
 60%|█████▉    | 756/1261 [14:48<11:24,  1.35s/it]
 60%|██████    | 757/1261 [14:49<11:05,  1.32s/it]
 60%|██████    | 758/1261 [14:50<10:18,  1.23s/it]
 60%|██████    | 759/1261 [14:51<11:07,  1.33s/it]
 60%|██████    | 760/1261 [14:52<10:22,  1.24s/it]
 60%|██████    | 761/1261 [14:53<09:53,  1.19s/it]
 60%|██████    | 762/1261 [14:55<10:53,  1.31s/it]
 61%|██████    | 763/1261 [14:56<10:50,  1.31s/it]
 61%|██████    | 764/1261 [14:57<10:07,  1.22s/it]
 61%|██████    | 765/1261 [14:59<11:02,  1.34s/it]
 61%|██████    | 766/1261 [15:00<10:23,  1.26s/it]
 61%|██████    | 767/1261 [15:02<11:31,  1.40s/it]
 61%|██████    | 768/1261 [15:03<10:41,  1.30s/it]
 61%|██████    | 769/1261 [15:04<10:38,  1.30s/it]
 61%|██████    | 770/1261 [15:05<10:08,  1.24s/it]
 61%|██████    | 771/1261 [15:07<10:15,  1.26s/it]
 61%|██████    | 772/1261 [15:08<10:45,  1.32s/it]
 61%|██████▏   | 773/1261 [15:09<10:48,  1.33s/it]
 61%|██████▏   | 774/1261 [15:11<11:31,  1.42s/it]
 61%|██████▏   | 775/1261 [15:12<10:34,  1.31s/it]
 62%|██████▏   | 776/1261 [15:13<10:10,  1.26s/it]
 62%|██████▏   | 777/1261 [15:14<09:26,  1.17s/it]
 62%|██████▏   | 778/1261 [15:15<09:01,  1.12s/it]
 62%|██████▏   | 779/1261 [15:16<08:47,  1.09s/it]
 62%|██████▏   | 780/1261 [15:17<08:33,  1.07s/it]
 62%|██████▏   | 781/1261 [15:18<08:28,  1.06s/it]
 62%|██████▏   | 782/1261 [15:19<08:16,  1.04s/it]
 62%|██████▏   | 783/1261 [15:20<08:11,  1.03s/it]
 62%|██████▏   | 784/1261 [15:21<08:08,  1.02s/it]
 62%|██████▏   | 785/1261 [15:22<08:13,  1.04s/it]
 62%|██████▏   | 786/1261 [15:24<09:09,  1.16s/it]
 62%|██████▏   | 787/1261 [15:25<08:58,  1.14s/it]
 62%|██████▏   | 788/1261 [15:26<08:47,  1.11s/it]
 63%|██████▎   | 789/1261 [15:27<08:39,  1.10s/it]
 63%|██████▎   | 790/1261 [15:28<08:39,  1.10s/it]
 63%|██████▎   | 791/1261 [15:29<08:30,  1.09s/it]
 63%|██████▎   | 792/1261 [15:30<08:30,  1.09s/it]
 63%|██████▎   | 793/1261 [15:32<09:20,  1.20s/it]
 63%|██████▎   | 794/1261 [15:33<10:16,  1.32s/it]
 63%|██████▎   | 795/1261 [15:35<10:33,  1.36s/it]
 63%|██████▎   | 796/1261 [15:36<10:09,  1.31s/it]
 63%|██████▎   | 797/1261 [15:37<10:10,  1.32s/it]
 63%|██████▎   | 798/1261 [15:39<10:37,  1.38s/it]
 63%|██████▎   | 799/1261 [15:40<09:58,  1.30s/it]
 63%|██████▎   | 800/1261 [15:41<09:29,  1.24s/it]
 64%|██████▎   | 801/1261 [15:42<09:15,  1.21s/it]
 64%|██████▎   | 802/1261 [15:43<09:06,  1.19s/it]
 64%|██████▎   | 803/1261 [15:44<08:45,  1.15s/it]
 64%|██████▍   | 804/1261 [15:45<08:32,  1.12s/it]
 64%|██████▍   | 805/1261 [15:46<08:16,  1.09s/it]
 64%|██████▍   | 806/1261 [15:48<08:33,  1.13s/it]
 64%|██████▍   | 807/1261 [15:49<08:22,  1.11s/it]
 64%|██████▍   | 808/1261 [15:50<08:18,  1.10s/it]
 64%|██████▍   | 809/1261 [15:51<08:16,  1.10s/it]
 64%|██████▍   | 810/1261 [15:52<08:10,  1.09s/it]
 64%|██████▍   | 811/1261 [15:53<08:18,  1.11s/it]
 64%|██████▍   | 812/1261 [15:54<08:20,  1.11s/it]
 64%|██████▍   | 813/1261 [15:55<08:14,  1.10s/it]
 65%|██████▍   | 814/1261 [15:56<08:05,  1.09s/it]
 65%|██████▍   | 815/1261 [15:57<07:51,  1.06s/it]
 65%|██████▍   | 816/1261 [15:58<07:55,  1.07s/it]
 65%|██████▍   | 817/1261 [15:59<07:40,  1.04s/it]
 65%|██████▍   | 818/1261 [16:00<07:36,  1.03s/it]
 65%|██████▍   | 819/1261 [16:01<07:30,  1.02s/it]
 65%|██████▌   | 820/1261 [16:02<07:29,  1.02s/it]
 65%|██████▌   | 821/1261 [16:04<08:13,  1.12s/it]
 65%|██████▌   | 822/1261 [16:05<09:13,  1.26s/it]
 65%|██████▌   | 823/1261 [16:07<09:39,  1.32s/it]
 65%|██████▌   | 824/1261 [16:08<09:19,  1.28s/it]
 65%|██████▌   | 825/1261 [16:09<08:55,  1.23s/it]
 66%|██████▌   | 826/1261 [16:11<09:32,  1.32s/it]
 66%|██████▌   | 827/1261 [16:12<09:48,  1.36s/it]
 66%|██████▌   | 828/1261 [16:13<08:59,  1.24s/it]
 66%|██████▌   | 829/1261 [16:14<08:23,  1.16s/it]
 66%|██████▌   | 830/1261 [16:15<08:05,  1.13s/it]
 66%|██████▌   | 831/1261 [16:16<07:48,  1.09s/it]
 66%|██████▌   | 832/1261 [16:17<07:32,  1.05s/it]
 66%|██████▌   | 833/1261 [16:18<07:21,  1.03s/it]
 66%|██████▌   | 834/1261 [16:19<07:13,  1.02s/it]
 66%|██████▌   | 835/1261 [16:20<07:08,  1.01s/it]
 66%|██████▋   | 836/1261 [16:21<07:04,  1.00it/s]
 66%|██████▋   | 837/1261 [16:22<07:04,  1.00s/it]
 66%|██████▋   | 838/1261 [16:23<07:18,  1.04s/it]
 67%|██████▋   | 839/1261 [16:24<07:13,  1.03s/it]
 67%|██████▋   | 840/1261 [16:25<07:07,  1.02s/it]
 67%|██████▋   | 841/1261 [16:26<07:03,  1.01s/it]
 67%|██████▋   | 842/1261 [16:27<07:00,  1.00s/it]
 67%|██████▋   | 843/1261 [16:28<06:55,  1.00it/s]
 67%|██████▋   | 844/1261 [16:29<06:52,  1.01it/s]
 67%|██████▋   | 845/1261 [16:30<06:50,  1.01it/s]
 67%|██████▋   | 846/1261 [16:31<06:48,  1.02it/s]
 67%|██████▋   | 847/1261 [16:32<06:46,  1.02it/s]
 67%|██████▋   | 848/1261 [16:33<06:46,  1.02it/s]
 67%|██████▋   | 849/1261 [16:34<06:44,  1.02it/s]
 67%|██████▋   | 850/1261 [16:35<06:44,  1.02it/s]
 67%|██████▋   | 851/1261 [16:36<06:43,  1.02it/s]
 68%|██████▊   | 852/1261 [16:37<06:39,  1.02it/s]
 68%|██████▊   | 853/1261 [16:38<06:38,  1.02it/s]
 68%|██████▊   | 854/1261 [16:39<06:39,  1.02it/s]
 68%|██████▊   | 855/1261 [16:40<06:37,  1.02it/s]
 68%|██████▊   | 856/1261 [16:41<06:34,  1.03it/s]
 68%|██████▊   | 857/1261 [16:42<06:34,  1.02it/s]
 68%|██████▊   | 858/1261 [16:43<06:35,  1.02it/s]
 68%|██████▊   | 859/1261 [16:44<06:45,  1.01s/it]
 68%|██████▊   | 860/1261 [16:45<06:50,  1.02s/it]
 68%|██████▊   | 861/1261 [16:46<06:51,  1.03s/it]
 68%|██████▊   | 862/1261 [16:47<06:47,  1.02s/it]
 68%|██████▊   | 863/1261 [16:48<06:41,  1.01s/it]
 69%|██████▊   | 864/1261 [16:49<06:38,  1.00s/it]
 69%|██████▊   | 865/1261 [16:50<06:35,  1.00it/s]
 69%|██████▊   | 866/1261 [16:51<06:34,  1.00it/s]
 69%|██████▉   | 867/1261 [16:52<06:30,  1.01it/s]
 69%|██████▉   | 868/1261 [16:53<06:30,  1.01it/s]
 69%|██████▉   | 869/1261 [16:54<06:27,  1.01it/s]
 69%|██████▉   | 870/1261 [16:55<06:27,  1.01it/s]
 69%|██████▉   | 871/1261 [16:56<06:31,  1.00s/it]
 69%|██████▉   | 872/1261 [16:57<06:29,  1.00s/it]
 69%|██████▉   | 873/1261 [16:58<06:25,  1.01it/s]
 69%|██████▉   | 874/1261 [16:59<06:25,  1.00it/s]
 69%|██████▉   | 875/1261 [17:00<06:22,  1.01it/s]
 69%|██████▉   | 876/1261 [17:01<06:22,  1.01it/s]
 70%|██████▉   | 877/1261 [17:02<06:19,  1.01it/s]
 70%|██████▉   | 878/1261 [17:03<06:19,  1.01it/s]
 70%|██████▉   | 879/1261 [17:04<06:20,  1.00it/s]
 70%|██████▉   | 880/1261 [17:05<06:25,  1.01s/it]
 70%|██████▉   | 881/1261 [17:06<06:21,  1.01s/it]
 70%|██████▉   | 882/1261 [17:07<06:20,  1.01s/it]
 70%|███████   | 883/1261 [17:08<06:17,  1.00it/s]
 70%|███████   | 884/1261 [17:09<06:14,  1.01it/s]
 70%|███████   | 885/1261 [17:10<06:14,  1.00it/s]
 70%|███████   | 886/1261 [17:11<06:12,  1.01it/s]
 70%|███████   | 887/1261 [17:12<06:11,  1.01it/s]
 70%|███████   | 888/1261 [17:13<06:10,  1.01it/s]
 70%|███████   | 889/1261 [17:14<06:07,  1.01it/s]
 71%|███████   | 890/1261 [17:15<06:05,  1.01it/s]
 71%|███████   | 891/1261 [17:16<06:03,  1.02it/s]
 71%|███████   | 892/1261 [17:17<06:00,  1.02it/s]
 71%|███████   | 893/1261 [17:18<05:59,  1.02it/s]
 71%|███████   | 894/1261 [17:19<06:00,  1.02it/s]
 71%|███████   | 895/1261 [17:20<05:59,  1.02it/s]
 71%|███████   | 896/1261 [17:21<05:58,  1.02it/s]
 71%|███████   | 897/1261 [17:22<05:58,  1.01it/s]
 71%|███████   | 898/1261 [17:23<05:58,  1.01it/s]
 71%|███████▏  | 899/1261 [17:24<05:57,  1.01it/s]
 71%|███████▏  | 900/1261 [17:25<05:55,  1.02it/s]
 71%|███████▏  | 901/1261 [17:26<05:55,  1.01it/s]
 72%|███████▏  | 902/1261 [17:27<05:54,  1.01it/s]
 72%|███████▏  | 903/1261 [17:28<05:51,  1.02it/s]
 72%|███████▏  | 904/1261 [17:28<05:49,  1.02it/s]
 72%|███████▏  | 905/1261 [17:29<05:48,  1.02it/s]
 72%|███████▏  | 906/1261 [17:30<05:49,  1.02it/s]
 72%|███████▏  | 907/1261 [17:31<05:46,  1.02it/s]
 72%|███████▏  | 908/1261 [17:32<05:44,  1.02it/s]
 72%|███████▏  | 909/1261 [17:33<05:43,  1.02it/s]
 72%|███████▏  | 910/1261 [17:34<05:43,  1.02it/s]
 72%|███████▏  | 911/1261 [17:35<05:41,  1.03it/s]
 72%|███████▏  | 912/1261 [17:36<05:39,  1.03it/s]
 72%|███████▏  | 913/1261 [17:37<05:37,  1.03it/s]
 72%|███████▏  | 914/1261 [17:38<05:37,  1.03it/s]
 73%|███████▎  | 915/1261 [17:39<05:36,  1.03it/s]
 73%|███████▎  | 916/1261 [17:40<05:34,  1.03it/s]
 73%|███████▎  | 917/1261 [17:41<05:33,  1.03it/s]
 73%|███████▎  | 918/1261 [17:42<05:34,  1.02it/s]
 73%|███████▎  | 919/1261 [17:43<05:32,  1.03it/s]
 73%|███████▎  | 920/1261 [17:44<05:34,  1.02it/s]
 73%|███████▎  | 921/1261 [17:45<05:35,  1.01it/s]
 73%|███████▎  | 922/1261 [17:46<05:34,  1.01it/s]
 73%|███████▎  | 923/1261 [17:47<05:32,  1.02it/s]
 73%|███████▎  | 924/1261 [17:48<05:30,  1.02it/s]
 73%|███████▎  | 925/1261 [17:49<05:27,  1.02it/s]
 73%|███████▎  | 926/1261 [17:50<05:27,  1.02it/s]
 74%|███████▎  | 927/1261 [17:51<05:25,  1.03it/s]
 74%|███████▎  | 928/1261 [17:52<05:24,  1.03it/s]
 74%|███████▎  | 929/1261 [17:53<05:29,  1.01it/s]
 74%|███████▍  | 930/1261 [17:54<05:26,  1.01it/s]
 74%|███████▍  | 931/1261 [17:55<05:24,  1.02it/s]
 74%|███████▍  | 932/1261 [17:56<05:22,  1.02it/s]
 74%|███████▍  | 933/1261 [17:57<05:20,  1.02it/s]
 74%|███████▍  | 934/1261 [17:58<05:21,  1.02it/s]
 74%|███████▍  | 935/1261 [17:59<05:18,  1.02it/s]
 74%|███████▍  | 936/1261 [18:00<05:16,  1.03it/s]
 74%|███████▍  | 937/1261 [18:01<05:16,  1.02it/s]
 74%|███████▍  | 938/1261 [18:02<05:16,  1.02it/s]
 74%|███████▍  | 939/1261 [18:03<05:20,  1.01it/s]
 75%|███████▍  | 940/1261 [18:04<05:24,  1.01s/it]
 75%|███████▍  | 941/1261 [18:05<05:25,  1.02s/it]
 75%|███████▍  | 942/1261 [18:06<05:21,  1.01s/it]
 75%|███████▍  | 943/1261 [18:07<05:17,  1.00it/s]
 75%|███████▍  | 944/1261 [18:08<05:12,  1.01it/s]
 75%|███████▍  | 945/1261 [18:09<05:12,  1.01it/s]
 75%|███████▌  | 946/1261 [18:10<05:11,  1.01it/s]
 75%|███████▌  | 947/1261 [18:11<05:08,  1.02it/s]
 75%|███████▌  | 948/1261 [18:12<05:06,  1.02it/s]
 75%|███████▌  | 949/1261 [18:13<05:08,  1.01it/s]
 75%|███████▌  | 950/1261 [18:14<05:05,  1.02it/s]
 75%|███████▌  | 951/1261 [18:15<05:03,  1.02it/s]
 75%|███████▌  | 952/1261 [18:16<05:01,  1.02it/s]
 76%|███████▌  | 953/1261 [18:17<05:00,  1.03it/s]
 76%|███████▌  | 954/1261 [18:18<04:59,  1.02it/s]
 76%|███████▌  | 955/1261 [18:19<04:58,  1.03it/s]
 76%|███████▌  | 956/1261 [18:20<04:56,  1.03it/s]
 76%|███████▌  | 957/1261 [18:20<04:54,  1.03it/s]
 76%|███████▌  | 958/1261 [18:21<04:54,  1.03it/s]
 76%|███████▌  | 959/1261 [18:22<04:53,  1.03it/s]
 76%|███████▌  | 960/1261 [18:23<04:53,  1.03it/s]
 76%|███████▌  | 961/1261 [18:24<04:53,  1.02it/s]
 76%|███████▋  | 962/1261 [18:25<04:53,  1.02it/s]
 76%|███████▋  | 963/1261 [18:26<04:52,  1.02it/s]
 76%|███████▋  | 964/1261 [18:27<04:50,  1.02it/s]
 77%|███████▋  | 965/1261 [18:28<04:48,  1.03it/s]
 77%|███████▋  | 966/1261 [18:29<04:48,  1.02it/s]
 77%|███████▋  | 967/1261 [18:30<04:47,  1.02it/s]
 77%|███████▋  | 968/1261 [18:31<04:45,  1.03it/s]
 77%|███████▋  | 969/1261 [18:32<04:45,  1.02it/s]
 77%|███████▋  | 970/1261 [18:33<04:49,  1.01it/s]
 77%|███████▋  | 971/1261 [18:34<04:49,  1.00it/s]
 77%|███████▋  | 972/1261 [18:35<04:47,  1.01it/s]
 77%|███████▋  | 973/1261 [18:36<04:45,  1.01it/s]
 77%|███████▋  | 974/1261 [18:37<04:46,  1.00it/s]
 77%|███████▋  | 975/1261 [18:38<04:43,  1.01it/s]
 77%|███████▋  | 976/1261 [18:39<04:43,  1.01it/s]
 77%|███████▋  | 977/1261 [18:40<04:39,  1.01it/s]
 78%|███████▊  | 978/1261 [18:41<04:38,  1.02it/s]
 78%|███████▊  | 979/1261 [18:42<04:37,  1.02it/s]
 78%|███████▊  | 980/1261 [18:43<04:35,  1.02it/s]
 78%|███████▊  | 981/1261 [18:44<04:34,  1.02it/s]
 78%|███████▊  | 982/1261 [18:45<04:33,  1.02it/s]
 78%|███████▊  | 983/1261 [18:46<04:31,  1.02it/s]
 78%|███████▊  | 984/1261 [18:47<04:30,  1.03it/s]
 78%|███████▊  | 985/1261 [18:48<04:29,  1.03it/s]
 78%|███████▊  | 986/1261 [18:49<04:28,  1.02it/s]
 78%|███████▊  | 987/1261 [18:50<04:26,  1.03it/s]
 78%|███████▊  | 988/1261 [18:51<04:25,  1.03it/s]
 78%|███████▊  | 989/1261 [18:52<04:23,  1.03it/s]
 79%|███████▊  | 990/1261 [18:53<04:23,  1.03it/s]
 79%|███████▊  | 991/1261 [18:54<04:23,  1.03it/s]
 79%|███████▊  | 992/1261 [18:55<04:21,  1.03it/s]
 79%|███████▊  | 993/1261 [18:56<04:57,  1.11s/it]
 79%|███████▉  | 994/1261 [18:57<04:47,  1.08s/it]
 79%|███████▉  | 995/1261 [18:58<04:42,  1.06s/it]
 79%|███████▉  | 996/1261 [18:59<04:38,  1.05s/it]
 79%|███████▉  | 997/1261 [19:00<04:32,  1.03s/it]
 79%|███████▉  | 998/1261 [19:01<04:29,  1.02s/it]
 79%|███████▉  | 999/1261 [19:02<04:24,  1.01s/it]
 79%|███████▉  | 1000/1261 [19:03<04:21,  1.00s/it]
 79%|███████▉  | 1001/1261 [19:04<04:19,  1.00it/s]
 79%|███████▉  | 1002/1261 [19:05<04:18,  1.00it/s]
 80%|███████▉  | 1003/1261 [19:06<04:16,  1.00it/s]
 80%|███████▉  | 1004/1261 [19:07<04:15,  1.01it/s]
 80%|███████▉  | 1005/1261 [19:08<04:13,  1.01it/s]
 80%|███████▉  | 1006/1261 [19:09<04:12,  1.01it/s]
 80%|███████▉  | 1007/1261 [19:10<04:11,  1.01it/s]
 80%|███████▉  | 1008/1261 [19:11<04:10,  1.01it/s]
 80%|████████  | 1009/1261 [19:12<04:08,  1.01it/s]
 80%|████████  | 1010/1261 [19:13<04:08,  1.01it/s]
 80%|████████  | 1011/1261 [19:14<04:06,  1.01it/s]
 80%|████████  | 1012/1261 [19:15<04:05,  1.01it/s]
 80%|████████  | 1013/1261 [19:16<04:04,  1.02it/s]
 80%|████████  | 1014/1261 [19:17<04:04,  1.01it/s]
 80%|████████  | 1015/1261 [19:18<04:03,  1.01it/s]
 81%|████████  | 1016/1261 [19:19<04:01,  1.01it/s]
 81%|████████  | 1017/1261 [19:20<04:06,  1.01s/it]
 81%|████████  | 1018/1261 [19:21<04:26,  1.10s/it]
 81%|████████  | 1019/1261 [19:22<04:21,  1.08s/it]
 81%|████████  | 1020/1261 [19:24<04:39,  1.16s/it]
 81%|████████  | 1021/1261 [19:25<04:47,  1.20s/it]
 81%|████████  | 1022/1261 [19:26<04:45,  1.20s/it]
 81%|████████  | 1023/1261 [19:28<05:33,  1.40s/it]
 81%|████████  | 1024/1261 [19:29<05:24,  1.37s/it]
 81%|████████▏ | 1025/1261 [19:31<05:08,  1.31s/it]
 81%|████████▏ | 1026/1261 [19:32<04:55,  1.26s/it]
 81%|████████▏ | 1027/1261 [19:33<04:41,  1.20s/it]
 82%|████████▏ | 1028/1261 [19:34<04:26,  1.14s/it]
 82%|████████▏ | 1029/1261 [19:35<04:18,  1.11s/it]
 82%|████████▏ | 1030/1261 [19:36<04:09,  1.08s/it]
 82%|████████▏ | 1031/1261 [19:37<04:20,  1.13s/it]
 82%|████████▏ | 1032/1261 [19:39<04:42,  1.23s/it]
 82%|████████▏ | 1033/1261 [19:40<05:26,  1.43s/it]
 82%|████████▏ | 1034/1261 [19:42<05:18,  1.40s/it]
 82%|████████▏ | 1035/1261 [19:43<05:12,  1.38s/it]
 82%|████████▏ | 1036/1261 [19:44<04:50,  1.29s/it]
 82%|████████▏ | 1037/1261 [19:45<04:41,  1.26s/it]
 82%|████████▏ | 1038/1261 [19:46<04:28,  1.20s/it]
 82%|████████▏ | 1039/1261 [19:47<04:12,  1.14s/it]
 82%|████████▏ | 1040/1261 [19:48<04:04,  1.10s/it]
 83%|████████▎ | 1041/1261 [19:49<03:55,  1.07s/it]
 83%|████████▎ | 1042/1261 [19:50<03:48,  1.04s/it]
 83%|████████▎ | 1043/1261 [19:51<03:43,  1.03s/it]
 83%|████████▎ | 1044/1261 [19:52<03:40,  1.02s/it]
 83%|████████▎ | 1045/1261 [19:53<03:40,  1.02s/it]
 83%|████████▎ | 1046/1261 [19:54<03:36,  1.01s/it]
 83%|████████▎ | 1047/1261 [19:55<03:33,  1.00it/s]
 83%|████████▎ | 1048/1261 [19:56<03:31,  1.01it/s]
 83%|████████▎ | 1049/1261 [19:57<03:29,  1.01it/s]
 83%|████████▎ | 1050/1261 [19:58<03:28,  1.01it/s]
 83%|████████▎ | 1051/1261 [19:59<03:26,  1.02it/s]
 83%|████████▎ | 1052/1261 [20:00<03:24,  1.02it/s]
 84%|████████▎ | 1053/1261 [20:01<03:25,  1.01it/s]
 84%|████████▎ | 1054/1261 [20:02<03:23,  1.02it/s]
 84%|████████▎ | 1055/1261 [20:03<03:22,  1.02it/s]
 84%|████████▎ | 1056/1261 [20:04<03:34,  1.05s/it]
 84%|████████▍ | 1057/1261 [20:06<03:32,  1.04s/it]
 84%|████████▍ | 1058/1261 [20:06<03:28,  1.03s/it]
 84%|████████▍ | 1059/1261 [20:08<03:27,  1.03s/it]
 84%|████████▍ | 1060/1261 [20:09<03:23,  1.01s/it]
 84%|████████▍ | 1061/1261 [20:09<03:20,  1.00s/it]
 84%|████████▍ | 1062/1261 [20:10<03:18,  1.00it/s]
 84%|████████▍ | 1063/1261 [20:11<03:15,  1.01it/s]
 84%|████████▍ | 1064/1261 [20:12<03:13,  1.02it/s]
 84%|████████▍ | 1065/1261 [20:13<03:13,  1.02it/s]
 85%|████████▍ | 1066/1261 [20:14<03:12,  1.01it/s]
 85%|████████▍ | 1067/1261 [20:15<03:11,  1.01it/s]
 85%|████████▍ | 1068/1261 [20:17<03:41,  1.15s/it]
 85%|████████▍ | 1069/1261 [20:18<03:35,  1.12s/it]
 85%|████████▍ | 1070/1261 [20:19<03:30,  1.10s/it]
 85%|████████▍ | 1071/1261 [20:20<03:23,  1.07s/it]
 85%|████████▌ | 1072/1261 [20:21<03:17,  1.05s/it]
 85%|████████▌ | 1073/1261 [20:22<03:14,  1.03s/it]
 85%|████████▌ | 1074/1261 [20:23<03:11,  1.02s/it]
 85%|████████▌ | 1075/1261 [20:24<03:08,  1.02s/it]
 85%|████████▌ | 1076/1261 [20:25<03:06,  1.01s/it]
 85%|████████▌ | 1077/1261 [20:26<03:04,  1.00s/it]
 85%|████████▌ | 1078/1261 [20:27<03:03,  1.00s/it]
 86%|████████▌ | 1079/1261 [20:28<03:02,  1.00s/it]
 86%|████████▌ | 1080/1261 [20:29<03:00,  1.00it/s]
 86%|████████▌ | 1081/1261 [20:30<02:58,  1.01it/s]
 86%|████████▌ | 1082/1261 [20:31<02:57,  1.01it/s]
 86%|████████▌ | 1083/1261 [20:32<02:55,  1.01it/s]
 86%|████████▌ | 1084/1261 [20:33<02:54,  1.02it/s]
 86%|████████▌ | 1085/1261 [20:34<02:53,  1.01it/s]
 86%|████████▌ | 1086/1261 [20:35<02:52,  1.01it/s]
 86%|████████▌ | 1087/1261 [20:36<02:51,  1.02it/s]
 86%|████████▋ | 1088/1261 [20:37<02:50,  1.01it/s]
 86%|████████▋ | 1089/1261 [20:38<02:49,  1.01it/s]
 86%|████████▋ | 1090/1261 [20:39<02:49,  1.01it/s]
 87%|████████▋ | 1091/1261 [20:40<02:48,  1.01it/s]
 87%|████████▋ | 1092/1261 [20:41<02:48,  1.01it/s]
 87%|████████▋ | 1093/1261 [20:42<02:46,  1.01it/s]
 87%|████████▋ | 1094/1261 [20:43<02:47,  1.00s/it]
 87%|████████▋ | 1095/1261 [20:44<02:46,  1.00s/it]
 87%|████████▋ | 1096/1261 [20:45<02:44,  1.00it/s]
 87%|████████▋ | 1097/1261 [20:46<02:43,  1.00it/s]
 87%|████████▋ | 1098/1261 [20:47<02:42,  1.01it/s]
 87%|████████▋ | 1099/1261 [20:48<02:40,  1.01it/s]
 87%|████████▋ | 1100/1261 [20:49<02:39,  1.01it/s]
 87%|████████▋ | 1101/1261 [20:50<02:37,  1.01it/s]
 87%|████████▋ | 1102/1261 [20:51<03:00,  1.13s/it]
 87%|████████▋ | 1103/1261 [20:53<03:07,  1.19s/it]
 88%|████████▊ | 1104/1261 [20:54<03:26,  1.32s/it]
 88%|████████▊ | 1105/1261 [20:56<03:27,  1.33s/it]
 88%|████████▊ | 1106/1261 [20:57<03:16,  1.27s/it]
 88%|████████▊ | 1107/1261 [20:58<03:12,  1.25s/it]
 88%|████████▊ | 1108/1261 [21:00<03:48,  1.49s/it]
 88%|████████▊ | 1109/1261 [21:02<04:14,  1.67s/it]
 88%|████████▊ | 1110/1261 [21:03<03:47,  1.51s/it]
 88%|████████▊ | 1111/1261 [21:04<03:24,  1.36s/it]
 88%|████████▊ | 1112/1261 [21:05<03:06,  1.25s/it]
 88%|████████▊ | 1113/1261 [21:06<02:52,  1.17s/it]
 88%|████████▊ | 1114/1261 [21:07<02:44,  1.12s/it]
 88%|████████▊ | 1115/1261 [21:08<02:37,  1.08s/it]
 89%|████████▊ | 1116/1261 [21:09<02:34,  1.07s/it]
 89%|████████▊ | 1117/1261 [21:10<02:29,  1.04s/it]
 89%|████████▊ | 1118/1261 [21:11<02:25,  1.02s/it]
 89%|████████▊ | 1119/1261 [21:12<02:24,  1.02s/it]
 89%|████████▉ | 1120/1261 [21:13<02:21,  1.00s/it]
 89%|████████▉ | 1121/1261 [21:14<02:18,  1.01it/s]
 89%|████████▉ | 1122/1261 [21:15<02:16,  1.02it/s]
 89%|████████▉ | 1123/1261 [21:16<02:15,  1.02it/s]
 89%|████████▉ | 1124/1261 [21:17<02:16,  1.00it/s]
 89%|████████▉ | 1125/1261 [21:18<02:17,  1.01s/it]
 89%|████████▉ | 1126/1261 [21:19<02:22,  1.06s/it]
 89%|████████▉ | 1127/1261 [21:20<02:18,  1.03s/it]
 89%|████████▉ | 1128/1261 [21:21<02:14,  1.01s/it]
 90%|████████▉ | 1129/1261 [21:22<02:12,  1.01s/it]
 90%|████████▉ | 1130/1261 [21:23<02:10,  1.00it/s]
 90%|████████▉ | 1131/1261 [21:24<02:09,  1.01it/s]
 90%|████████▉ | 1132/1261 [21:25<02:07,  1.01it/s]
 90%|████████▉ | 1133/1261 [21:26<02:05,  1.02it/s]
 90%|████████▉ | 1134/1261 [21:27<02:04,  1.02it/s]
 90%|█████████ | 1135/1261 [21:28<02:03,  1.02it/s]
 90%|█████████ | 1136/1261 [21:29<02:02,  1.02it/s]
 90%|█████████ | 1137/1261 [21:30<02:02,  1.02it/s]
 90%|█████████ | 1138/1261 [21:31<02:00,  1.02it/s]
 90%|█████████ | 1139/1261 [21:32<01:59,  1.02it/s]
 90%|█████████ | 1140/1261 [21:33<01:58,  1.02it/s]
 90%|█████████ | 1141/1261 [21:34<01:57,  1.02it/s]
 91%|█████████ | 1142/1261 [21:35<01:56,  1.02it/s]
 91%|█████████ | 1143/1261 [21:36<01:55,  1.02it/s]
 91%|█████████ | 1144/1261 [21:37<01:54,  1.02it/s]
 91%|█████████ | 1145/1261 [21:38<01:53,  1.03it/s]
 91%|█████████ | 1146/1261 [21:39<01:51,  1.03it/s]
 91%|█████████ | 1147/1261 [21:40<01:51,  1.02it/s]
 91%|█████████ | 1148/1261 [21:41<01:51,  1.02it/s]
 91%|█████████ | 1149/1261 [21:42<01:49,  1.02it/s]
 91%|█████████ | 1150/1261 [21:43<01:48,  1.03it/s]
 91%|█████████▏| 1151/1261 [21:44<01:47,  1.02it/s]
 91%|█████████▏| 1152/1261 [21:45<01:46,  1.03it/s]
 91%|█████████▏| 1153/1261 [21:46<01:45,  1.03it/s]
 92%|█████████▏| 1154/1261 [21:47<01:43,  1.03it/s]
 92%|█████████▏| 1155/1261 [21:48<01:43,  1.02it/s]
 92%|█████████▏| 1156/1261 [21:49<01:42,  1.02it/s]WARNING:py.warnings:/Users/cristianku/anaconda2/anaconda/envs/carnd-term1/lib/python3.5/site-packages/ipykernel_launcher.py:103: RuntimeWarning: invalid value encountered in double_scalars


 92%|█████████▏| 1157/1261 [21:50<01:41,  1.02it/s]
 92%|█████████▏| 1158/1261 [21:51<01:40,  1.02it/s]
 92%|█████████▏| 1159/1261 [21:51<01:40,  1.02it/s]
 92%|█████████▏| 1160/1261 [21:52<01:39,  1.02it/s]
 92%|█████████▏| 1161/1261 [21:53<01:37,  1.03it/s]
 92%|█████████▏| 1162/1261 [21:54<01:36,  1.03it/s]
 92%|█████████▏| 1163/1261 [21:55<01:35,  1.03it/s]
 92%|█████████▏| 1164/1261 [21:56<01:34,  1.03it/s]
 92%|█████████▏| 1165/1261 [21:57<01:33,  1.03it/s]
 92%|█████████▏| 1166/1261 [21:58<01:32,  1.02it/s]
 93%|█████████▎| 1167/1261 [21:59<01:31,  1.02it/s]
 93%|█████████▎| 1168/1261 [22:00<01:30,  1.02it/s]
 93%|█████████▎| 1169/1261 [22:01<01:30,  1.01it/s]
 93%|█████████▎| 1170/1261 [22:02<01:29,  1.02it/s]
 93%|█████████▎| 1171/1261 [22:03<01:28,  1.01it/s]
 93%|█████████▎| 1172/1261 [22:04<01:28,  1.01it/s]
 93%|█████████▎| 1173/1261 [22:05<01:26,  1.02it/s]
 93%|█████████▎| 1174/1261 [22:06<01:25,  1.02it/s]
 93%|█████████▎| 1175/1261 [22:07<01:24,  1.02it/s]
 93%|█████████▎| 1176/1261 [22:08<01:23,  1.02it/s]
 93%|█████████▎| 1177/1261 [22:09<01:21,  1.03it/s]
 93%|█████████▎| 1178/1261 [22:10<01:20,  1.03it/s]
 93%|█████████▎| 1179/1261 [22:11<01:19,  1.03it/s]
 94%|█████████▎| 1180/1261 [22:12<01:18,  1.03it/s]
 94%|█████████▎| 1181/1261 [22:13<01:17,  1.03it/s]
 94%|█████████▎| 1182/1261 [22:14<01:16,  1.03it/s]
 94%|█████████▍| 1183/1261 [22:15<01:15,  1.03it/s]
 94%|█████████▍| 1184/1261 [22:16<01:14,  1.03it/s]
 94%|█████████▍| 1185/1261 [22:17<01:13,  1.03it/s]
 94%|█████████▍| 1186/1261 [22:18<01:12,  1.03it/s]
 94%|█████████▍| 1187/1261 [22:19<01:11,  1.03it/s]
 94%|█████████▍| 1188/1261 [22:20<01:10,  1.03it/s]
 94%|█████████▍| 1189/1261 [22:21<01:09,  1.03it/s]
 94%|█████████▍| 1190/1261 [22:22<01:09,  1.02it/s]
 94%|█████████▍| 1191/1261 [22:23<01:08,  1.03it/s]
 95%|█████████▍| 1192/1261 [22:24<01:07,  1.02it/s]
 95%|█████████▍| 1193/1261 [22:25<01:06,  1.02it/s]
 95%|█████████▍| 1194/1261 [22:26<01:05,  1.03it/s]
 95%|█████████▍| 1195/1261 [22:27<01:04,  1.03it/s]
 95%|█████████▍| 1196/1261 [22:28<01:03,  1.03it/s]
 95%|█████████▍| 1197/1261 [22:29<01:02,  1.03it/s]
 95%|█████████▌| 1198/1261 [22:30<01:01,  1.02it/s]
 95%|█████████▌| 1199/1261 [22:31<01:00,  1.02it/s]
 95%|█████████▌| 1200/1261 [22:32<00:59,  1.02it/s]
 95%|█████████▌| 1201/1261 [22:32<00:58,  1.02it/s]
 95%|█████████▌| 1202/1261 [22:33<00:57,  1.02it/s]
 95%|█████████▌| 1203/1261 [22:34<00:56,  1.02it/s]
 95%|█████████▌| 1204/1261 [22:35<00:55,  1.02it/s]
 96%|█████████▌| 1205/1261 [22:36<00:54,  1.03it/s]
 96%|█████████▌| 1206/1261 [22:37<00:53,  1.03it/s]
 96%|█████████▌| 1207/1261 [22:38<00:52,  1.03it/s]
 96%|█████████▌| 1208/1261 [22:39<00:51,  1.03it/s]
 96%|█████████▌| 1209/1261 [22:40<00:50,  1.03it/s]
 96%|█████████▌| 1210/1261 [22:41<00:49,  1.03it/s]
 96%|█████████▌| 1211/1261 [22:42<00:48,  1.03it/s]
 96%|█████████▌| 1212/1261 [22:43<00:47,  1.03it/s]
 96%|█████████▌| 1213/1261 [22:44<00:46,  1.03it/s]
 96%|█████████▋| 1214/1261 [22:45<00:45,  1.03it/s]
 96%|█████████▋| 1215/1261 [22:46<00:44,  1.03it/s]
 96%|█████████▋| 1216/1261 [22:47<00:43,  1.03it/s]
 97%|█████████▋| 1217/1261 [22:48<00:42,  1.03it/s]
 97%|█████████▋| 1218/1261 [22:49<00:41,  1.03it/s]
 97%|█████████▋| 1219/1261 [22:50<00:40,  1.03it/s]
 97%|█████████▋| 1220/1261 [22:51<00:39,  1.03it/s]
 97%|█████████▋| 1221/1261 [22:52<00:38,  1.04it/s]
 97%|█████████▋| 1222/1261 [22:53<00:37,  1.04it/s]
 97%|█████████▋| 1223/1261 [22:54<00:36,  1.03it/s]
 97%|█████████▋| 1224/1261 [22:55<00:35,  1.03it/s]
 97%|█████████▋| 1225/1261 [22:56<00:34,  1.03it/s]
 97%|█████████▋| 1226/1261 [22:57<00:33,  1.04it/s]
 97%|█████████▋| 1227/1261 [22:58<00:32,  1.03it/s]
 97%|█████████▋| 1228/1261 [22:59<00:31,  1.03it/s]
 97%|█████████▋| 1229/1261 [23:00<00:30,  1.04it/s]
 98%|█████████▊| 1230/1261 [23:01<00:29,  1.03it/s]
 98%|█████████▊| 1231/1261 [23:02<00:29,  1.03it/s]
 98%|█████████▊| 1232/1261 [23:03<00:28,  1.02it/s]
 98%|█████████▊| 1233/1261 [23:04<00:28,  1.01s/it]
 98%|█████████▊| 1234/1261 [23:05<00:27,  1.01s/it]
 98%|█████████▊| 1235/1261 [23:06<00:26,  1.00s/it]
 98%|█████████▊| 1236/1261 [23:07<00:24,  1.01it/s]
 98%|█████████▊| 1237/1261 [23:08<00:23,  1.01it/s]
 98%|█████████▊| 1238/1261 [23:09<00:22,  1.02it/s]
 98%|█████████▊| 1239/1261 [23:10<00:21,  1.02it/s]
 98%|█████████▊| 1240/1261 [23:11<00:20,  1.02it/s]
 98%|█████████▊| 1241/1261 [23:11<00:19,  1.03it/s]
 98%|█████████▊| 1242/1261 [23:12<00:18,  1.03it/s]
 99%|█████████▊| 1243/1261 [23:13<00:17,  1.03it/s]
 99%|█████████▊| 1244/1261 [23:14<00:16,  1.03it/s]
 99%|█████████▊| 1245/1261 [23:15<00:15,  1.04it/s]
 99%|█████████▉| 1246/1261 [23:16<00:14,  1.04it/s]
 99%|█████████▉| 1247/1261 [23:17<00:13,  1.03it/s]
 99%|█████████▉| 1248/1261 [23:18<00:12,  1.03it/s]
 99%|█████████▉| 1249/1261 [23:19<00:11,  1.03it/s]
 99%|█████████▉| 1250/1261 [23:20<00:10,  1.03it/s]
 99%|█████████▉| 1251/1261 [23:21<00:09,  1.03it/s]
 99%|█████████▉| 1252/1261 [23:22<00:08,  1.03it/s]
 99%|█████████▉| 1253/1261 [23:23<00:07,  1.03it/s]
 99%|█████████▉| 1254/1261 [23:24<00:07,  1.04s/it]
100%|█████████▉| 1255/1261 [23:25<00:06,  1.02s/it]
100%|█████████▉| 1256/1261 [23:26<00:05,  1.01s/it]
100%|█████████▉| 1257/1261 [23:27<00:04,  1.02s/it]
100%|█████████▉| 1258/1261 [23:28<00:02,  1.00it/s]
100%|█████████▉| 1259/1261 [23:29<00:01,  1.01it/s]
100%|█████████▉| 1260/1261 [23:30<00:00,  1.01it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_output_hog_nn.mp4 

CPU times: user 22min 22s, sys: 1min 4s, total: 23min 26s
Wall time: 23min 31s
Completed
In [32]:
from  queue import Queue
import numpy as np